• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Flash调用Lua脚本:一

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

这里有一个具体的例子:http://rc.qzone.qq.com/100641772   

1)首需要这个 http://code.google.com/p/lua-alchemy/

2)看一个简单的应用,在这个example里面,Lua文件是作为字符串写到里面的。

 1 import flash.display.Sprite;
 2     import flash.events.Event;
 3     import flash.events.MouseEvent;
 4     import flash.utils.ByteArray;
 5     import  luaAlchemy.LuaAlchemy;
 6     import luaAlchemy.LuaAssets;
 7     import fl.controls.Button;
 8     
 9     /**
10      * ...
11      * @author 蜂窝煤
12      */
13     
14     public class Main extends Sprite 
15     {    
16         private var btn4:Button;
17         
18         public function Main():void 
19         {
20             init();            
21         }
22         
23         private function init(e:Event = null):void 
24         {
25             var luaString:String = "local btn = as3.class.fl.controls.Button.new()\nthis.addChild(btn)\nbtn.width=200";
26             var lua:LuaAlchemy = new LuaAlchemy();
27             lua.setGlobal("this", this);
28             lua.doString(luaString);
29         }        
30     }

注意一下16行,其实这行逻辑上没有起任何作用,但如果没有的话,就会报错。25行里面lua语句中的\n,去掉也是一样的。

 

Lua error:
builtin://lua_alchemy/as3/sugar.lua:227: invalid package::ClassName: 'fl.controls::Button'
stack traceback:
 [C]: in function 'old_fn'
 builtin://lua_alchemy/as3/sugar.lua:227: in function 'new2'
 builtin://lua_alchemy/as3/sugar.lua:341: in function 'new'
 luaDoString:1: in main chunk

实际上,var btn:Button这句话写哪里都可以,但是必须存在。

感谢老王提供了另外一个版本,在这里面,Lua文件作为资源嵌入。

 1 import com.ftygame.jerrywong.bitmapui.JWTLFText;
 2     
 3     import flash.display.Sprite;
 4     import flash.events.Event;
 5     import flash.utils.ByteArray;
 6     
 7     import luaAlchemy.LuaAlchemy;
 8     
 9     public class TestLuaAlchemy extends Sprite
10     {
11         private var myLuaAlchemy:LuaAlchemy;
12         [Embed(source="../assets/HelloWorld.lua", mimeType="application/octet-stream")]
13         private var LuaClass:Class;
14         
15         public function TestLuaAlchemy()
16         {
17             if(stage) initializeApplication();
18             else addEventListener(Event.ADDED_TO_STAGE, initializeApplication);
19         }
20         private function initializeApplication(e:Event=null):void
21         {
22             removeEventListener(Event.ADDED_TO_STAGE,initializeApplication);
23             importClass4Lua();
24             var luaAsset:ByteArray = new LuaClass() as ByteArray;
25             var luaString:String = luaAsset.readUTFBytes(luaAsset.bytesAvailable);
26             var lua:LuaAlchemy = new LuaAlchemy();
27             lua.setGlobal("this",this);
28             var res:Array = lua.doString(luaString);
29             
30         }
31         private function importClass4Lua():void
32         {
33             var label:JWTLFText;
34         }
35         
36     }
37 }


这里面学习了一个读取文件的技巧。

又写了一个异步读取Lua文件的版本。

 1 public class Main extends Sprite 
 2     {    
 3         public function Main():void 
 4         {
 5             
 6             var loader:URLLoader = new URLLoader();    
 7             var request:URLRequest = new URLRequest("helloworld.lua");
 8             loader.load(request);
 9             loader.dataFormat = URLLoaderDataFormat.TEXT;
10             loader.addEventListener(Event.COMPLETE, function(e:Event):void
11             {
12                 DoLua(loader.data);
13             });
14         }
15         
16         private function DoLua(_luaSt:String):void 
17         {
18             var btn4:Button;
19             var lua:LuaAlchemy = new LuaAlchemy();
20             lua.setGlobal("this", this);
21             lua.doString(_luaSt);
22         }        
23     }

 看一眼,效果图,一个简单的按钮被添加了。

在下一节里,我们深入讲讲这个专题,主要针对一些As3toLualowevel api        Flash 调用lua脚本 二


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
cocos-lua基础学习(10)scheduler类学习笔记发布时间:2022-07-22
下一篇:
lua定时器与定时任务的接口设计发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap