cocos lua学习笔记
现在学习的时候用的是cocos3.7 + ide1.2
在lua里面,c++的方法和类基本上都在cc.和ccs. ccui.里面,可尝试cc.Sprite,ccs.GUIReader,ccui.Button
加载ui: local widget = cc.CSLoader:createNode("AttributePanel.csb")
绑定c方法到lua,给lua调用:
lua_register(L,"cocosLog",cocosLog);//绑定
但是说绑定的c方法必须按一定格式来写,参考下面 这里用了静态方法 static int LuaBridge::cocosLog(lua_State* L)
必须有返回值且返回什为int类型,参数列表里只有一个参数,如上 然后,你在lua里面就可以这么调用 了: cocosLog("test out")
c调用lua方法:
比如我有以下lua文件: test.lua
function testfunc(param1,param2) local oustring = string.format("txt out:%d--%s",param1,param2:getName()) end 注意这里是一个全局方法,其实cocos已经帮我们做好了一些东西,首先你要做的是先执行这个文件,目的是让这个方法进入全局变量 可以这样执行: LuaEngine::getInstance()->executeScriptFile("test.lua"); 完了之后你就可以调用了,怎么调,看下面: lua_getglobal(LuaEngine::getInstance()->getStack()->getLuaState(),"testfunc");//选取方法 LuaEngine::getInstance()->getStack()->pushnumber(20); LuaEngine::getInstance()->getStack()->pushobject(this,"cc.Node"); lua_call(LuaEngine::getInstance()->getStack()->getLuaState(),2,0);//这里第二个参数是传给lua的参数有几个,第三个是lua返回几个参数 然后你就可以看到打钱出:txt out:20--[结点的名字]
lua类的构造顺序: 取得原先实例之后先调用create方法,此方法后会调用new()方法,new()方法里会调用ctor()方法,ctor方法我们可以自己重写
cocos lua定义新的全局变量: 由于cocos lua框架限制了直接定义全局变量的方法,所以要用其它方法, 这里cocos lua已有提供:
cc.exports.myglobal = "hello" 这名之后你就可以直接访问了: print(myglobal)--->输出:hello
访问lua的table
假如lua里面有如下全局table
mytable = { param1 = 52, param2 = "abc" }
那么在c里面可以这样访问:
lua_getglobal(L,"mytable"); lua_getfield(L,-1,"param1"); float p1 = lua_tonumber(L,-1); lua_getfield(L,-2,"param2");//这里因为上一次的getfield进了一次栈,所以mytable到了-2的位置 string str = lua_tostring(L,-1) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |