Cocos Studio 2.2.1的版本中加入了万众期待的Lua文件导出,虽然在其后的版本(2.2.5之后) 中,该功能已经删除(从Cocos Studio的开发人员了解到该功能实际并未从项目中删除,只是暂时屏蔽而已,应该是要考虑作为插件提供,或许会收费吧),但2.2.1提供的功能已经足够使用了
我在这里不会讲太多这功能多么好,多么棒,主要提一些在使用过程中遇到的问题以及我的解决办法以供参考,基本上,我的解决方法离不开Python。
2.2.1加入了强制的命名判定,在同一个文件中所有控件(是的,你没看错,是所有,哪怕不是同一个父节点,在2.2.5中已修复),这一点在很多时候都是很不方便的,有可能会给程序员增加不少重复的工作,但我们不可能直接去修改CCS(Cocos Studio,以下全都用CCS来代替),所以只能在导出的Lua文件中做手脚,我的办法是对于所有需要同名的文件在名字中加后缀_samen(n可以取任意数字),然后写一个Python脚本读取Lua文件,将其中的xxx_samen全部替代为xxx。当然,不用Python,用其他任意可以批处理文件的都可以做到这一点。
2.2.1中导出的Lua文件中,所有Text的字体颜色都是用的setColor(),这应该是CCS开发人员的一个小失误,这在通常情况下是不会出错的,但一旦当Text有子节点的时候,其子节点就会被Text的颜色混合,导致子节点颜色的错误,因此,这里还是应该改为setTextColor,我还是用Python处理的
2.2.1中是可以直接指定控件的回调的,包括Click(只在TouchEnd的时候调用),Touch等,在导出的Lua文件中的使用方法为在调用Create的时候传入一个回调函数callBackProvider(luafile_name, ui_name, callback_name),已经很明确了,该函数会接收文件名,空间名,回调方法名三个参数,并返回回调函数,具体的用法很简单,就不上代码了,只提一下我个人的一个小想法,既然回调函数都是通过这个方式去注册的,那么完全可以在callBackProvider中做一些手脚以简单的达到监控回调事件,具体做法因人而异。
其实2.2.1的导出Lua已经比较完善了,并且还附带有一个扩展插件功能(虽然使用起来比较复杂而繁琐),并没有我想象中那么多坑,也或许是我暂时用到的部分不多,所以没踩到那么多。
导出Lua带来的便捷却是毋庸置疑的,其主要在于,与解析Json相比,直接对Lua的操作会灵活的多。虽然2.2.1之后的版本已经隐藏该功能,但我相信会有不少人一直保留一个2.2.1的版本来研究一下这个Lua导出,希望有人可以与我一起探讨关于Cocos2d-x Lua 的技术。