[情報] BSIE - AS3的scripting engine

看板Flash作者 (CJ Cat)時間15年前 (2009/04/05 12:24), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串1/2 (看更多)
有玩過PC game的人多多少少看過所謂的"console"吧 像很多Valve出的遊戲按下~就會跳出一個可以輸入指令的console視窗 這種及時輸入code及時編譯的引擎叫做scripting engine 像是Python, MATLAB語言都屬於scripting language LUA是一個很有名的scripting engine 被Lucas Arts拿來做星際大戰遊戲系列 目前有人用Alchemy將其轉換成AS3可以用的library,不過還在0.2beta階段 BISE是我最近發現的一個輕量級AS2 scripting engine (BISE = BeInteractive Scripting Engine) 是一位叫做Yoshihiro Shindo的日本人寫的 他的blog在這裡 http://be-interactive.org/ Sean Givan將其翻譯成AS3版本,也就是我最近在玩的版本 AS3版本網址在這裡 http://0rz.tw/imL7Z Script engine的好處: (1)可以讓使用者直接從console輸入code立即編譯 不需要為了測試、修改某個小大方而重新把主程式編譯一次 (2)寫好的code存成文字擋,可以要執行的時候再載入 BISE的用法也很簡單 不外乎用到Scanner, Parser, VirtualMachine三個class而已 import scripting.*; import idv.cjcat.display.shapes.*; var code:String = "trace(123);"; var s:Scanner = new Scanner(code); var p:Parser = new Parser(s); var vm:VirtualMachine = new VirtualMachine(); vm.getGlobalObject().trace = trace; vm.setByteCode(p.parse()); vm.execute(); //那行 "trace(123);" 就會導致Flash Player印出123 BISE的變數沒有type,使用一個var即可 var i = 123; BISE可以利用VirtualMachine.getGlobalObject()來讓其跟一些function和class做連結 vm.getGlobalObject().trace = trace; ↑就是定義BISE script裡面的trace等於Flash的trace BISE沒有new operator,但是我們可以用函式的方式來達到同樣的效果 import scripting.*; import flash.display.*; //這些是BISE script var code:String = ""; code += "var circle = create(Shape);"; code += "circle.graphics.lineStyle(0);"; code += "circle.graphics.drawCircle(50, 50, 50);"; code += "root.addChild(circle);"; var s:Scanner = new Scanner(code); var p:Parser = new Parser(s); var vm:VirtualMachine = new VirtualMachine(); //跟一些function, object, class做連結 vm.getGlobalObject().trace = trace; vm.getGlobalObject().root = root; vm.getGlobalObject().Shape = Shape; //利用此function來達到new的效果 vm.getGlobalObject().create = create; function create(c:Class):* { return new c(); } vm.setByteCode(p.parse()); vm.execute(); 夠好玩吧? 有興趣的人可以試試用BISE來操縱自己寫的小遊戲看看 :) -- CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓 Blog http://cjcat.blogspot.com Gallery http://cjcat2266.deviantart.com ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.82.66 ※ 編輯: cjcat2266 來自: 61.228.82.66 (04/05 14:42)

04/05 18:12, , 1F
好東西啊!
04/05 18:12, 1F

04/05 20:17, , 2F
推啊!
04/05 20:17, 2F

04/05 20:28, , 3F
補上AS3版的網址 http://0rz.tw/imL7Z
04/05 20:28, 3F

04/05 21:52, , 4F
大推
04/05 21:52, 4F

04/05 22:28, , 5F
哎呀呀,抱歉哪,我原本是要po AS3版本的,結果忘記XD
04/05 22:28, 5F

04/05 22:28, , 6F
趕快來補上 :p
04/05 22:28, 6F
※ 編輯: cjcat2266 來自: 61.228.86.152 (04/05 22:29)
文章代碼(AID): #19s39rjP (Flash)
文章代碼(AID): #19s39rjP (Flash)