cocos2dx绑定lua并进行代码测试

前端之家收集整理的这篇文章主要介绍了cocos2dx绑定lua并进行代码测试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

看了很多文章和介绍,但是还是一头雾水。之前做过2.x版本,也做过3.4版本。如今需要用lua,但是究竟怎样binding?光说不练假把式。

关于tolua++的英文翻译可见这个地址:http://www.jb51.cc/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开始:
Main.lua是Cocos2d-lua项目的默认入口,即项目启动时,首先执行这个文件。(我们也可以修改config.json文件的entry字段来配置入口文件
main.lua中进行了几项操作:
a)把res和src两个文件添加文件搜索路径。
b)读取Config.lua加载lua配置信息。执行Cocos.init,这个文件根据配置信息初始化Cocos2d-lua框架(require加载lua模块时必须使用”.”来代替路径中的”/”符号)
c)创建App文件夹中的App对象,调用run函数,run函数可以有参数,用于配置第一个进入的场景,默认是MainScene。从App对象开始才是是码农朋友们的劳动场所,一般从这里开始添加游戏逻辑。
Config.luaConfig.lua提供了几个字段用于配置项目,可以修改这些字段的值来达到某些效果
DEBUG字段:设置输出调试信息的等级,0为无,1为少量的,2为完全的。其实就是控制几个不同的print函数是否输出
CC_USE_FRAMEWORK字段:设置是否使用quick框架,包括MVC框架。
CC_SHOW_FPS字段:是否显示FPS等显卡相关信息。
CC_DISABLE_GLOBAL字段:是否允许定义全局变量,具体可看此篇说明:
http://cocoslua.cn/2014/12/disable-global-var/
CC_DESIGN_RESOLUTION字段:设置在不同分辨率下,游戏分辨率的调整策略,具体可参考此篇教程:http://cn.cocos2d-x.org/tutorial/show?id=1434在执行cocos/init.lua的时候,就会根据上述配置信息,来配置项目。

Cocos-Lua项目自带的MVC框架
自带的MVC框架的基础代码在创建的项目的src/package/mvc中可以找到。这里边有三个文件AppBase.lua、init.lua、ViewBase.lua。
AppBase:算是MVC框架的管理角色,主要管理View对象,比如提供了一些接口用于切换View。
ViewBase.lua:继承于2d-x的Node类型。但其中的ShowWIthScene接口会创建一个Scene文件,把View自身添加到这个Scene上,并命令全局显示这个Scene。
Init.lua:不用说,看字面就知道,这个用于初始化MVC框架。

基于MVC框架开始给我们的游戏添加逻辑:
MVC框架填充逻辑的地方默认在app文件夹中(res/app或者src/app)。
默认会在这个文件夹下生成MyApp.lua和Views文件夹,我们应该在views中为每个游戏场景添加一个继承自ViewBase的类,加载CocosStudio编辑出来的界面,处理交互、动画等界面逻辑,并调用models中的类处理游戏逻辑;此外我们还需要在这个文件夹下添加一个model文件夹,用来填写游戏的逻辑代码



具体游戏逻辑的文件结构
在MyApp.lua中,我们可以重写onCreate函数,在这里添加进入第一个游戏界面之前的处理逻辑,我们的示例游戏比较简单,不需要在这里做什么特殊处理。在onCreate执行完之后,紧接着会执行AppBase的run函数,这个函数在Main.lua中调用,这个函数有一个参数,用来决定进入的第一个View,如果不填写这个参数,默认会进入MainScene.lua文件

主界面:MainScene.lua代码如下:
--MainScene.lua 

-- 创建一个MainScne类,继承ViewBase对象
local MainScene =class( "MainScene" ,cc.load( "mvc" ).ViewBase)
重载onCreate函数 function :onCreate()
-- 加载CocosStudio编辑出来的MainScene.csb
local root =cc.CSLoader:createNode( "MainScene.csb" )
:addTo( self )
function onPlay ()
-- 进入PlayScene,使用闭包catch self变量。
self :getApp():enterScene( "PlayScene" )
end
获取名称为PlayButton的按钮,然后添加这个按钮在接受到点击时的处理代码
:getChildByName( "PlayButton" :addClickEventListener( )
end
return MainScene
大部分逻辑上述代码中的注释都有写明。

游戏界面:
点击Play按钮,会触发上述代码中的onPlay函数。然后执行下面这句代码

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 :是否循环
原文链接:https://www.f2er.com/cocos2dx/341185.html

猜你在找的Cocos2d-x相关文章