• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            讓自己的程序支持腳本,尤其是支持JavaScript是件很有意思的事情的,下面是一個(gè)簡單的Demo,通過google的V8引擎的來實(shí)現(xiàn)這個(gè)功能。

            我們Demo的JavaScript代碼如下:
            function draw(dc)
            {
            drawer.drawLine(dc, 0xFF, 5, 100, 100, 200, 200);
            drawer.drawLine(dc, 0xFF0000, 10, 50, 50, 300, 200);
            drawer.drawFrame(dc, 0x00FF00, 2, 350, 200, 500, 400);
            drawer.fillRect(dc, 0xFF00FF, 50, 400, 150, 500);
            }

            最終會(huì)實(shí)現(xiàn)如下的效果:


            可以看到窗口上畫什么東西,完全有腳本來控制。

            Chrome V8的編譯,設(shè)計(jì)和使用方法,不具體說了,可以參考:
            https://developers.google.com/v8/design
            https://developers.google.com/v8/embed

            具體怎么實(shí)現(xiàn)的,可以參考源代碼。
            說幾點(diǎn)需要注意的
            (1)因?yàn)槲覀冊诰幾gV8.dll時(shí)用的是Release版DLL方式的C/C++運(yùn)行庫,所以我們的這個(gè)應(yīng)用程序工程也需要這樣設(shè)置。
            (2)我用Vs2008編譯,發(fā)現(xiàn)中文路徑下文件讀取會(huì)有問題,
            具體原因可以參考http://blog.csdn.net/lyqchina/article/details/4214205
            (3)一定要調(diào)用Script.Run(),這樣我們才能在運(yùn)行環(huán)境成功取得腳本里Draw方法。

            我們上面的這個(gè)例子只是一個(gè)簡單的Demo, 真正在商業(yè)軟件中運(yùn)用V8還有很多問題要考慮。
            比如Demo中的JS代碼沒有考慮異常,失敗等情況。
            另外在C++函數(shù)和腳本的綁定方面用的都是V8的原始接口,不是很方便, 如果需要方便的綁定可以參考這個(gè)開源項(xiàng)目http://code.google.com/p/cproxyv8/
            如果想用V8給自己的軟件提供腳本接口, 有個(gè)很好的開源項(xiàng)目可以參考,就是Node.js, 地址http://nodejs.org/,該項(xiàng)目已經(jīng)成為通過JS開發(fā)Web服務(wù)程序的平臺,本質(zhì)上是也是通過V8封裝C++對象給JS腳本使用。

            現(xiàn)在我們已經(jīng)可以看到V8的強(qiáng)大, 理論上我們可以通過V8 封裝任何庫給JS使用,未來如果所有平臺的API都有庫給JS使用的話,我們就也可以用JS開發(fā)應(yīng)用程序了,這時(shí)JS就是類似Java的一個(gè)平臺了。

            源代碼下載: Source Code
            posted on 2012-05-19 11:59 Richard Wei 閱讀(15954) 評論(0)  編輯 收藏 引用 所屬分類: 腳本

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久噜噜噜久久中文字幕色伊伊| 国内精品伊人久久久影院| 国产精品久久久久AV福利动漫| 久久99精品国产麻豆| 久久av免费天堂小草播放| 久久精品青青草原伊人| 国产99久久九九精品无码| 国产精品久久婷婷六月丁香| 精品久久久久久中文字幕| 亚洲精品美女久久777777| 欧美日韩中文字幕久久久不卡 | 日日狠狠久久偷偷色综合96蜜桃| 精品国产乱码久久久久久人妻| 伊人色综合久久天天| 久久人妻少妇嫩草AV无码专区 | 久久丫精品国产亚洲av不卡| 国产激情久久久久影院老熟女免费| 一本色综合网久久| 免费一级欧美大片久久网| 品成人欧美大片久久国产欧美| 久久国产精品一国产精品金尊| 免费久久人人爽人人爽av| 亚洲国产成人乱码精品女人久久久不卡| 国产精品福利一区二区久久| 香蕉久久夜色精品升级完成| 久久大香萑太香蕉av| 日产精品久久久久久久| 一极黄色视频久久网站| 伊人久久成人成综合网222| 亚洲精品tv久久久久| 最新久久免费视频| 欧美亚洲国产精品久久| 少妇熟女久久综合网色欲| 九九精品久久久久久噜噜| 亚洲AV伊人久久青青草原| 久久免费99精品国产自在现线| 成人精品一区二区久久久| 久久精品中文字幕有码| 2021国产精品午夜久久| 亚洲色大成网站WWW久久九九| 亚洲色欲久久久综合网东京热|