
使用Eclipse来开发lua。使用eclipse开发lua,可以运用其强大的扩展能力,大大地加快开发。文章将介绍怎么定制一个工具来生成lua,并进行调用。
开发工具下载使eclipse开发lua有两种方法: 1)安装ldt; 2)下载整合好的eclipse;
ldt的安装就不介绍了,大家可以到网上去搜索关于eclipse插件安装的教程;官方也有相应的说明:http://www.eclipse.org/koneki/ldt/#documentation
如果要安装c++相关的功能,还需要安装cdt,cdt的官方如下:http://www.eclipse.org/cdt/downloads.php
调试界面:
配置tolua++工具 在cocos2dx中开发lua,需要用到tolua++来生成文件。网上已经有相关教程,不过都不是很全面, *** 作也不是很方便。我在这里利用eclipse强大的工具配置功能来定制tolua++,使得开发更有效率。 点击菜单Run->External Tools -> External Tools Configurations...;d出对话框,如下图所示:
在Program下增加一个工具,就叫luaMaker吧;配置如上图。 几点说明(假设cocos2dx的根目录为/Users/shhqw132/documents/cocos2d-2.1rc0-x-2.1.3): 1) 在tools/tolua++目录下有tolua++工具,默认是打包的(windows打包成rar文件;mac下打包成zip文件)。根据情况减压一个到tools/tolua++下;上图中,工具的Location定位到刚刚减压缩出来的可执行文件。 2)Eclipse中内置了一些变量的地址。这里用到了${resource_loc} 这个变量,即当前选择的资源在系统中的绝对路径。 3)tolua++命令格式如下: ./tolua++ -L basic.lua -o xxx.cpp xxx.pkg ; -L:指定相应lua文件的位置(用于修改生成的cpp文件,cocos2dx中用来对tolua++生产的文件做fix); -o 指定的是生成的cpp文件的名称; xxx.pkg是规则文件。 tolua++的作用就是读取xxx.pkg文件,然后结合-L中指定的lua(用于修改生成的代码),最终生成cpp文件。 在上图的Arguments中,添加相应的tolua++的参数。 更多关于-L的说明。 由于tolua++不支持回调函数,而cocos2dx中用到了如registerScriptHandler等回调函数,所以cocos2dx对用tolua++生成的代码进行了一些fix;这些fix的规则在tools/tolua++/basic.lua中定义。所以为了支持回调函数,请使用这个文件。 OK,工具配置完毕。 整合开发 创建一个cocos2d_lua工程,命名为LuaTest01。在项目的classes文件夹下创建一个pkg子文件夹,然后引入到工程中(我是用引用的方式加进来的)。 然后创建一个MyTest.h,并形成一个MyTest.pkg文件;具体如下图:
MyTest.h [cpp] view plain copy #ifndef LuaTest01_MyTest_h #define LuaTest01_MyTest_h #include "cocos2d.h" USING_NS_CC; class MyTest: public cclayer { private: int invokeHandler; public: Mytest() : invokeHandler(0) {} CREATE_FUNC(MyTest); voID setHandler(int _handler) { this->invokeHandler = _handler; } voID callFunc() { ccluaStack* pStack = ccluaEngine::defaultEngine()->getLuaStack(); pStack->pushInt(123); pStack->executeFunctionByHandler(this->invokeHandler, 1); voID sayHello() { cclog("Hello, world!"); static voID classInfo() { cclog("This class is MyTest"); voID otherFunc() { //This function doesn't expose to the lua }; #endif 把MyTest.cpp中要暴露的方法,整合到MyTest.pkg中,如下: copy public cclayer { static MyTest* create(); voID setHandler(LUA_FUNCTION _handler) ; voID callFunc() ; voID sayHello() ; voID classInfo() ; }; 注意点:1)由于pkg中不识别宏,所以要把CREATE_FUNC ( MyTest );展开成 static MyTest* create(); 2)回调函数虽然是指针类型(也就是一个int), 但是在pkg中要声明成LUA_FUNCTION这一自定义类型。然后在cocos2dx的一个扩展中(可以在basic.lua文件中找到)对其进行处理。 在eclipse中创建lua工程,并引用xcode中的pkg文件夹。如下图:
最终效果如下:
右击选择TextEditor,可以打开MyTest.pkg进行编辑。
保持MyTest.pkg为选择状态,然后点击工具栏上的luaMaker。将在pkg文件夹下生成MyTest.pkg.cpp文件。
@H_548_403@
在xcode中把MyTest.pkg.cpp文件拖到工程中,如下图:在MyTest.pkg.cpp中加入头文件: copy #include "MyTest.h"
拷贝MyTest.pkg.cpp中的tolua_MyTest_open函数的声明到MyTest.h中。 copy /* Exported function */ TolUA_API int tolua_MyTest_open (lua_State* tolua_S); 并在MyTest.h中引入下面的头文件: copy extern "C" { #include "tolua++.h" #include "tolua_fix.h" } #include "ccluaEngine.h"
在游戏启动代码中注册自定义的c++函数,使这些函数能够在lua中被使用。 在AppDelegate.cpp 中引用头文件MyTest.h;并在appicationDIDFinishLaunching方法中加入如下代码: [cpp] view plain copy tolua_MyTest_open(pEngine->getLuaStack()->getLuaState()); 编译一下。OK,完成之后,我们编写的c++端的代码,通过tolua_MyTest_open被注册到了lua环境下了。接下来的事情就是编写lua端代码了。 切换到Eclipse下,和上面的方法一样,在Eclipse中引入xcode项目中的Resources目录,如下图:
双击打开hello.lua, 在main函数中加入如下代码: copy cclog("====test static method====="); MyTest:classInfo(); cclog("====test member function========"); local mt = MyTest:create(); mt:sayHello(); cclog("====test callback function====="); local function callback(num) cclog("This is the function from lua, and param is: " .. num); end mt:setHandler(callback); mt:callFunc(); 结果如下:
准备工作做好之后,接下来在MyTest文件中添加函数的工作就很简单了。 1)在eclipse中修改pkg文件,选中其文件,执行luaMaker命令; 2)在xcode中打开MyTest.pkg.cpp,加入MyTest.h头文件,编译; 3)在eclipse中,编辑lua文件,使用新加入的函数。 OK,enjoy yourself。 如果遇到编码问题,请右击文件-》propertIEs;在d出的对话框中选择编码,如下图: 总结
以上是内存溢出为你收集整理的lua环境搭建全部内容,希望文章能够帮你解决lua环境搭建所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)