• <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   管理


            欧美成a人片免费看久久| 国产精品99久久久久久www| 国产精品国色综合久久| 国产成人精品综合久久久| 国内精品久久久久伊人av| 久久综合九色综合网站| 婷婷久久五月天| 久久99精品久久久大学生| 国产欧美久久一区二区| Xx性欧美肥妇精品久久久久久| .精品久久久麻豆国产精品| 久久人人添人人爽添人人片牛牛| 久久精品国产亚洲AV久| 亚洲国产精品久久久久婷婷老年| 青青青青久久精品国产| 一本大道久久a久久精品综合| 久久精品国产第一区二区| 香蕉久久夜色精品国产尤物| 久久久无码精品午夜| 久久91精品国产91| 精品无码久久久久久尤物| 久久国产成人精品麻豆| 久久99精品国产麻豆| 久久er热视频在这里精品| 久久久久亚洲AV无码去区首| 久久精品国产免费观看三人同眠| 亚洲狠狠婷婷综合久久久久| 日韩精品国产自在久久现线拍| 久久精品国产福利国产琪琪| 亚洲AV伊人久久青青草原| 久久精品国产72国产精福利| 亚洲国产视频久久| 亚洲欧美一区二区三区久久| 人妻无码精品久久亚瑟影视| 久久综合狠狠色综合伊人| 久久久久久久人妻无码中文字幕爆| 国产精品免费久久久久电影网| 久久精品亚洲精品国产色婷| 国产精品伦理久久久久久| 久久精品国产亚洲AV久| 亚洲国产精品狼友中文久久久|