从官网下载 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中直接子控件,子控件的子控件是无法绑定的
未完待续