从0开始使用Cocos2dx Lua过程记录

从官网下载 cocos2dx 3.16版本

下载完成用notepad++打开readme.md文档

按照说明运行setup.py,发现未安装python,去python官网下载最新的python 2.7.14

安装完成后再次运行setup.py,提示找不到python命名,于是将python安装路径添加到系统的环境变量中

再次运行setup.py,提示需要设置NDK_ROOT等其他android环境,因为暂时不编译Android,直接回车忽略了

配置完成后开始创建项目,cocos new MyGame -p com.your_company.mygame -l cpp -d d:\lua_test

开始编译Win32项目,在命令行运行 cocos run -p win32,提示没有安装Vs2013、Vs2015、Vs2017中的任意一个

去网络下载Vs2013的ISO文件,下载完成后开始安装

安装过程中一直卡在“创建系统还原点”,百度查找原因,打开系统->系统保护,在配置中关闭所有保护,删除所有已经创建的还原点,马上就继续安装了

安装到最后又一直卡在“ Visual Studio 2013 准备”状态,断开网络就结束了。【因此建议安装过程中全程断开网络】


继续执行cocos run -p win32,等待一段时间后,就成功运行了

接下来需要找一个IDE,首先想到的是LuaStudio,官网下载后运行,居然注册界面频繁卡死,只好暂时作罢

又去下载了一个LDT(LuaDevelopmentTools),下载完毕后运行,提示需要JRE或JDK,遂下载之。

正常启动LDT后,建立项目,然后打开Lua文件测试,发现不能补全代码,百度后未找到合适方案

再次在百度搜索,发现一个babelua的VS插件,支持VS2012、VS2013、VS2015,准备下载研究,参见 http://blog.csdn.net/babestudio/article/details/27222141

过程中重启电脑,发现LuaStudio又可以使用,继续研究LuaStudio,发现LuaStudio可以只能提示,继续测试


进入LuaStudio之后,提示需要用机器绑定注册或帐号登录,果断选择帐号登录,进去后没有提示注册,但是看时间只能免费使用一天,先使用再说

新建一个LuaStudio工程,将cocos生成的仿真器文件下的lua文件(.\simulator\win32\src)全部导入工程,开始测试

查看cocos工程相关的代码,发现在工程内的函数基本能做到智能提示,但是cocos的核心库不能提示,这时可以通过“工具->Cocos2dx-api”,选择一个版本即可

这里的cocos2dx-api的提示,也仅仅是一个辅助作用,如果真正要查看帮助,可以到 http://api.cocos.org/ 下查看,右边可以选择语言(c++ js lua)


接下来要解决lua代码的调试问题

lua在window下的调试,可以直接打开lua工程,如MyGame.sln(位置:frameworks\runtime-src\proj.win32),直接运行

lua代码中的print和printLog函数日志都会在VS的输入窗口内显示,如果Lua脚本出现错误,还会在日志内有调用栈信息


接下来开始解决UI编辑器的问题

经过百度查询,编辑器只有cocosbuilder和cocostudio两种,cocosbuilder已经很久之前的版本了,只有使用cocostudio

在网上查找,可以找到最后发布的cocostudio版本为3.10,当时支持的cocos2dx版本为3.10,由于3.16版本高于3.10,应该可以使用


接着要学习一下cocostudio的编辑相关内容

看一下cocostudio的界面操作, 参考一下 http://www.cnblogs.com/damowang/p/5179716.html

了解一下控件的类分别是什么,类名是什么(先百度看其他人讲解,然后看cocos2dx源代码),参考一下http://www.cnblogs.com/hewei2012/p/3456415.html

了解一下怎么发布资源,lua里边怎么调用(包括界面和动画)

了解lua下怎么响应控件的事件,默认UIWidget的Touch事件是关闭的,需要调用setTouchEnabled打开,然后调用addTouchEventListener监听事件
local img = node:getChildByTag(21);
   local function onButtonTouch(sender, eventType)
     if eventType == ccui.TouchEventType.began then
     print(sender:getTag())
   end
end

img:setTouchEnabled(true)
img:addTouchEventListener(onButtonTouch)
注意ccui.TouchEventType.began定义在cocos.ui.GuiConstants中,需要require "cocos.ui.GuiConstants"

lua下查看对象的类的名称,可以打印xxx:getDescription(),根据显示的信息直接判断,如果不清楚可以查看cocos2dx源代码

lua下定时器怎么使用,一般使用 cc.Director:getInstance():getScheduler():scheduleScriptFunc(function(dt) end, inteval, false)

加载cocostudio生成的csb文件
    mainscene中,使用MainScene.RESOURCE_FILENAME = "MainScene.csb"

    同时还可以使用MainScene.RESOURCE_BINDING来绑定控件的对象
    RESOURCE_BINDING的具体格式 MainScene.RESOURCE_BINDING = { ["XXX"] = {["varname"] = "YYY", ["events"] = {{["event"]="touch", ["method"]="onBtnTouch"}}}, }
    XXX是代表cocostudio中的变量名字,YYY代码lua中变量名字,然后在lua代码中可以使用self:YYY来访问对象
    需要注意的是,仍然需要调用setTouchEnabled,如果为了方便可以修改ViewBase中代码,只要有事件的就默认打开
    还有需要特别注意的是,绑定的对象仅支持CSB中直接子控件,子控件的子控件是无法绑定的


未完待续




猜你喜欢

转载自blog.csdn.net/missmecn/article/details/78363414
今日推荐