cocos2dx绑定lua并进行代码测试
看了很多文章和介绍,但是还是一头雾水。之前做过2.x版本,也做过3.4版本。如今需要用lua,但是究竟怎样binding?光说不练假把式。 关于tolua++的英文翻译可见这个地址:http://www.52php.cn/article/p-yumajoax-bcc.html(然并卵) 关于OpenGL的介绍和tutorial可见这个地址:http://www.opengl-tutorial.org/zh-hans/beginners-tutorials-zh/(可以当饭后甜点) 关于tolua++使用可见这个地址:tolua++实现分析,cocos2dx的lua绑定(佩服作者,写的很好) 刚开始做这件事情的时候,面对很多很长的名字和指令,简直要疯掉,自己摸索着看代码,越看越乱。这些东西太抽象,没有在脑子里形成具体的概念,所以自己抓掉了很多头发。
那么,cocos2dx-lua 是如何启动的呢?示例: main.cpp—>SimulatorWin.cpp—>AppDelegate.cpp—>lua 而在lua中的启动顺序如下说明: 从main.lua开始: Cocos-Lua项目自带的MVC框架 基于MVC框架开始给我们的游戏添加逻辑:
具体游戏逻辑的文件结构
在MyApp.lua中,我们可以重写onCreate函数,在这里添加进入第一个游戏界面之前的处理逻辑,我们的示例游戏比较简单,不需要在这里做什么特殊处理。在onCreate执行完之后,紧接着会执行AppBase的run函数,这个函数在Main.lua中调用,这个函数有一个参数,用来决定进入的第一个View,如果不填写这个参数,默认会进入MainScene.lua文件。
主界面:MainScene.lua的代码如下:
--
创建一个MainScne类,继承ViewBase对象
local
MainScene
=class(
"MainScene"
,cc.load(
"mvc"
).ViewBase)
重载onCreate函数
function
:onCreate()
end
return
MainScene
大部分逻辑上述代码中的注释都有写明。 游戏界面:
self
:getApp():enterScene(
"PlayScene"
)
如上:先通过ViewBase的getApp接口获取App对象,然后执行app的enterScene接口,这个接口会根据参数去app/views文件夹下找PlayScene.lua这个文件并加载出来。当然这个文件里边的类必须继承自ViewBase,不继承ViewBase就不能用enterScene加载。
PlayScene.lua
的部分代码如下:
1.
逻辑代码的加载:
GameLogital
=import(
"..models.GameLogital"
MVC
框架没有帮我们自动加载app/models里边的lua代码,需要我们自己去手动加载这些东西。
注:这里使用到import接口而不是require,import是quick框架提供的接口,相比require这个接口使用的是相对路径。
2.
方便的接口:
.root =cc.CSLoader:createNode(
"
PlayScene.csb"
):addTo(
self)
注意最后的addTo函数,这些函数是quick提供的,在调用完会返回对象本身,所以我们可以像下面这样使用,不需要重复地去写变量名:
cc.Sprite:create(texture):move(x,y):rotate(r):addTo(p)
这些函数可以在src/cocos/framework/extends/下找到。
3.
创建,添加动画:
tlAct
=cc.CSLoader:createTimeline(
"PlayScene.csb"
)
.root:runAction(
self.act_tag = tlAct:getTag()--
用于后续获取动画
首先使用cc.CSLoader:createTimeline创建动画,然后使用runAction把这个动画挂载到加载出来的节点上。
4.
播放动画:
local tlAct =self.root:getActionByTag(self.act_tag)
:gotoFrameAndPlay(
0
false
先通过tag获取动画,如上。然后调用gotoFrameAndPlay接口,这个接口有三个重载:
gotoFrameAndPlay(begin,end,loop)
gotoFrameAndPlay(begin)
参数解释:
Begin
:从第几帧开始播放
End:
播放到第几帧
Loop
:是否循环
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |