【Cocos2dx】之绑定lua---的坑

来源:互联网 发布:杀破狼 js 编辑:程序博客网 时间:2024/04/28 17:31

感谢http://my.oschina.net/guyson/blog/338375
先说明一个问题:Python、pyyaml、pyCheetah都用32位版本(ps:tolua目录下README.mdown里有下载链接)否则会报错!!!!!!!!
* Download python2.7.3 (32bit) from (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi).
* Add the installed path of python (e.g. C:\Python27) to windows environment variable named ‘PATH’.
* Download pyyaml from http://pyyaml.org/download/pyyaml/PyYAML-3.10.win32-py2.7.exe and install it.
* Download pyCheetah from https://raw.github.com/dumganhar/my_old_cocos2d-x_backup/download/downloads/Cheetah.zip, unzip it to “C:\Python27\Lib\site-packages”


终于开始正式学习lua了,看了一下发现lua的基本语法并没有很多,但是和cocos绑定的时候却遇到了很多的问题。
版本:cocos2dx v3.6

cocos绑定lua的方法这里就不再赘述,给出官方的链接:cocos2dx之绑定lua
按照官方的步骤走,在编译 genbindings.py 文件的时候遇到了问题,截图如下:
No module named yaml
大意就是说 缺少叫做的YAML模块
网上搜了下,发现这个yaml : Yet Another Markup Language 也是一种标记语言;它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。

那么接下来就来安装yaml吧
因为在这里是和python交互,所以我们只需要下载和电脑上安装的python版本对应的yaml就好了,这里给出下载链接:yaml下载链接,在上述链接里面找到和自己电脑上python版本对应的就好了,下载完成之后就一路next就好了。

坑爹的是,再次执行 genbindings.py 居然又报错:
No module named Cheetah.Template

各方查询,最终结论是缺少python 安装工具
下载地址:https://pypi.python.org/pypi/setuptools
注意:win7 64位必须使用ez_setup.py进行安装。方法是下载ez_setup.py后(我在页面上找到源码,本地自己新建了文件,然后源码拷进去的),在cmd下执行 python ez_setup.py(这一步要在C:\Python27\Scripts下执行),即可自动安装setuptools。目前没有直接的exe安装版本。
然后添加环境变量:在path中添加 C:\Python27\Scripts 即可。
在黑窗口中输入easy_install virtualenv ,出现如下内容即为安装成功:

Searching for virtualenvReading https://pypi.python.org/simple/virtualenv/Best match: virtualenv 13.1.2Downloading https://pypi.python.org/packages/source/v/virtualenv/virtualenv-13.1.2.tar.gz#md5=b989598f068d64b32dead530eb25589aProcessing virtualenv-13.1.2.tar.gzWriting c:\users\guangbao\appdata\local\temp\easy_install-dksuma\virtualenv-13.1.2\setup.cfgRunning virtualenv-13.1.2\setup.py -q bdist_egg --dist-dir c:\users\guangbao\appdata\local\temp\easy_install-dksuma\virtualenv-13.1.2\egg-dist-tmp-oyixu0warning: no previously-included files matching '*' found under directory 'docs\_templates'warning: no previously-included files matching '*' found under directory 'docs\_build'creating c:\python27\lib\site-packages\virtualenv-13.1.2-py2.7.eggExtracting virtualenv-13.1.2-py2.7.egg to c:\python27\lib\site-packagesAdding virtualenv 13.1.2 to easy-install.pth fileInstalling virtualenv-script.py script to C:\Python27\ScriptsInstalling virtualenv.exe script to C:\Python27\ScriptsInstalling virtualenv-2.7-script.py script to C:\Python27\ScriptsInstalling virtualenv-2.7.exe script to C:\Python27\ScriptsInstalled c:\python27\lib\site-packages\virtualenv-13.1.2-py2.7.eggProcessing dependencies for virtualenvFinished processing dependencies for virtualenv

从此想安装python的任何库,只要执行 easy_install + 库名字 即可。
在这里我输入 easy_install Cheetah 即可解决上述问题。

好了,继续我们的使用 bindings-generator 自动生成 lua绑定,在官方文档的最后有一句话:还有一件事,当你调用register方法​​,你应该确定,Lua的栈顶元素是 _G 。
关于这句话,在AppDelegate.cpp中代码应该这样写:

lua_State *L = stack->getLuaState();lua_getglobal(L, "_G");register_all_MyClass(L);lua_settop(L, 0);

ps:我用的3.6版本可以直接写register_all_MyClass(stack->getLuaState());

之后需要把在 frameworks\cocos2d-x\cocos\scripting\lua-bindings\auto生成的两个文件lua_MyClass_auto.cpp 和 lua_MyClass_auto.hpp ,导进vs项目中libluacocos2d下的auto目录中,

将自定义的类导入到cocos2dx项目中Classes目录下,(注:我是把类放在了Classes目录下,根据自己的实际情况去做)

添加liblua文件搜索路径, 将 $(EngineRoot)../runtime-src/Classes 路径加进去。

0 0