博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flash调用Lua脚本: 二
阅读量:5240 次
发布时间:2019-06-14

本文共 3014 字,大约阅读时间需要 10 分钟。

这里有一个具体的例子:       

在这一节里面,进一步学习使用LuaAlchemy。

     和上一节一样,首先建立一个AS3项目.

public class LowevelDemo1 extends Sprite    {        public function LowevelDemo1()        {            InitPage();            LoadLua("../luaassets/lowevel.lua");        }                private function InitPage():void        {            var label:Label;            var btn:Button = new Button();            btn.move(100, 100);            addChild(btn);            var c:MyClass;        }                private function LoadLua(_url:String):void        {            var urlLoader:URLLoader = new URLLoader();            urlLoader.dataFormat = URLLoaderDataFormat.TEXT;            var urlRequest:URLRequest = new URLRequest(_url);            urlLoader.addEventListener(Event.COMPLETE, function(e:Event):void{                ExecuteLua(urlLoader.data);            });            urlLoader.load(urlRequest);        }                private function ExecuteLua(_luaSt:String):void        {            var lua:LuaAlchemy = new LuaAlchemy();            lua.setGlobal("this", this);            lua.doString(_luaSt);        }    }

这是一个主文件,在这个文件里我们载入了一个Lua脚本。在页面上放了一个按钮。

下面让我们看看Lua脚本。

-- LuaAlchemy -- http://code.google.com/p/lua-alchemy/wiki/LuaToAS3LowLevel--[[     进一步学习LuaAlchemy,lua脚本的学习]]--as3.trace("Lua Demo")--as3.class.fl.controls.Button.new()-- btn = as3.new("fl.controls::Button") 这个写法总是出错function luamethod()  as3.trace("ok")endlocal lab1 = as3.class.fl.controls.Label.new()lab1.text = "This is a lua alchemy demo."lab1.width = 200this.addChild(lab1)lab1.move(10,10)local st1 = as3.new("String","Hello World!")local v,n = as3.tolua(st1,40)as3.trace(type(v))as3.trace(type(n))as3.trace(type(st1))local m = as3.toas3(luamethond)as3.trace(m)as3.trace(luamethond)lab1.text = st1local m1,m2 = as3.toas3(45,function() local m = 100 end)as3.trace(type(m1))as3.trace(type(m2))local m3 = as3.new("Array")m3[0] = "A"m3[1] = "b"local m4 = as3.get(m3,"length")as3.trace(type(m4))as3.set(lab1,"text","Change by lua")as3.trace(as3.type(m3))local customClass = as3.class.CustomPack.MyClass.new()as3.trace(as3.type(customClass))as3.call(customClass.c1,"m1")local c5 = as3.get(customClass,"p1")local c6 = as3.tolua(c5)as3.trace(c5)as3.trace(c6)

在脚本里面看到了MyClass这个类。

package CustomPack{    public class MyClass    {        public var p1:int = 100;        public var c1:MyClass2 = new MyClass2();        public function MyClass()        {        }                public function HelloMethod(_n:int):void        {            trace((p1*_n));        }    }}
package CustomPack{    public class MyClass2    {        public var p1:int = 33;        public function MyClass2()        {        }                public function m1():void        {            trace("hello,m1");        }    }}

 补充一点,如果想在AS文件中调用Lua文件的函数也很简单,为按钮添加下面的事件代码就可以了。

,btn2.addEventListener(MouseEvent.CLICK, function(e:Event):void   {    var result:Array = lua.doString("TempMethod()");   });

现在,我们不但可以从Lua访问AS里面的方法,而且可以从AS里面访问Lua的方法了。

转载于:https://www.cnblogs.com/GameCode/archive/2012/07/20/2600417.html

你可能感兴趣的文章
exit和return的区别
查看>>
discuz 常用脚本格式化数据
查看>>
洛谷P2777
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>
Django 相关
查看>>
git init
查看>>
训练记录
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Hive教程(1)
查看>>
第16周总结
查看>>
C#编程时应注意的性能处理
查看>>
Fragment
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
使用C#交互快速生成代码!
查看>>
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书_2019年
查看>>