文档章节

Cocos2dx-3.0-rc0版本Lua的配置与使用

d
 dennyguotf
发布于 2014/04/11 16:34
字数 793
阅读 4222
收藏 2

Cocos2dx-3.0-rc0版本Lua的配置与使用

以下是在WIN7 + VS2012环境下测试!

一、下载

到官网下载Cocos2dx-3.0-rc0。

二、导出C++接口到Lua方法

         这一步可以按官方提供的文档(\cocos2d-x-3.0rc0\tools\tolua\ README.mdown)一步一步操作:

On Windows:
------------

* Make sure that you have installed `android-ndk-r9b`.
* 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/cocos2d-x/download/downloads/Cheetah.zip, unzip it to "C:\Python27\Lib\site-packages"
* Set environment variables (`NDK_ROOT`)
* Go to "cocos2d-x/tools/tolua" folder, and run "genbindings.py". The generated codes will be under "cocos\scripting\auto-generated\js-bindings".

         这里有个点要注意:一定要按上面的版本要求下载对应的工具,到目前官网上NDK的最新版本是r9d,而且这里是要求r9b。如果不是按版本要求就会出现以下问题:

          'functional' file not found 的错误

         解决方法有两个:a. 下载对应版本 b. 把所有的.ini文件(\cocos2d-x-3.0rc0\tools\tolua目录下)里的4.7修改成4.8

         完成之后,就是按最后一步说的,在命令行下执行cocos2d-x/tools/tolua目录下的genbindings.py。

         最后结果就是在\cocos2d-x-3.0rc0\cocos\scripting\lua-bindings\auto目录下会生成一些.cpp和.hpp文件。

 

三、导出自定义的C++接口到Lua方法

         到第二步,就是了解了导出的大概方法。我们最终的目的还是要导出自定义的接口。

         这一步参考了这篇博客(http://www.cnblogs.com/mrblue/)。

         总结了一下步骤:

                   1:环境,如果第二步是对的就OK了

                   2:写一个自己的C++类(LuaSprite.h这也是我测试cocos2dx-2.x版本时候的例子,继续用)                 

#ifndef cocos2dx_lua_tests_by_guo_LuaSprite_h	
#define cocos2dx_lua_tests_by_guo_LuaSprite_h	
#include "cocos2d.h"	
using namespace cocos2d;	
class LuaSprite: public cocos2d::Sprite	
{
	public:
		int varInt;
		static LuaSprite* createLuaSprite(const char* _name);
		void LuaSpriteInit();
		void LuaCallFun();	
};	
#endif

         3.编写python脚本,直接修改原来的genbindings_New.py文件(复制一份)

                   a.修改生成目录到我们自己的工程目录:output_dir                       

                   b.修改命令参数:cmd_args

        4. 修改ini配置文件,也就是上面cmd_args里配置的.ini文件(myclass.ini),同样的复制一份原来的.ini文件修改。

            主要修改以下几个:

               [myclass] 

                prefix = myclass

                target_namespace =

                headers = %(cocosdir)s/tests/lua-empty-test/project/Classes/LuaSprite.h

                classes = LuaSprite*.

                skip =

                abstract_classes =

            这里有几个地方要注意的:

                a.      节点名要跟cmd_args里配置的一致

                b.      Classes这项按照参考的那篇blog里配置方法,生成的文件里没内容的,后来反复对比原来的配置修改成现在这样,最后成功了

         5. 最后执行genbindings_New.py,如果成功你会看到:

        

dos2unix: Skipping api, not a regular file.
dos2unix: converting file lua_MyClass_auto.cpp to Unix format ...
dos2unix: converting file lua_MyClass_auto.hpp to Unix format ...
---------------------------------
Generating lua bindings succeeds.
---------------------------------


         同时也会在,指定的目录下生成:

                  api文件夹、lua_MyClass_auto.cpp、lua_MyClass_auto.hpp

         其中lua_MyClass_auto.cpp里有个注册函数内容如下:

                 

int lua_register_MyClass_LuaSprite(lua_State* tolua_S)
{
    tolua_usertype(tolua_S,"LuaSprite");
    tolua_cclass(tolua_S,"LuaSprite","LuaSprite","cc.Sprite",nullptr);

    tolua_beginmodule(tolua_S,"LuaSprite");
        tolua_function(tolua_S,"LuaSpriteInit",lua_MyClass_LuaSprite_LuaSpriteInit);
        tolua_function(tolua_S,"LuaCallFun",lua_MyClass_LuaSprite_LuaCallFun);
        tolua_function(tolua_S,"createLuaSprite", lua_MyClass_LuaSprite_createLuaSprite);
    tolua_endmodule(tolua_S);
    std::string typeName = typeid(LuaSprite).name();
    g_luaType[typeName] = "LuaSprite";
    g_typeCast["LuaSprite"] = "LuaSprite";
    return 1;
}

 

到目前为止完成了环境配置与自定义接口Lua接口。


© 著作权归作者所有

d
粉丝 4
博文 10
码字总数 3726
作品 0
浦东
私信 提问
Quick-Cocos2d-x 3.3 使用WebView

1、编写ini文件。进入frameworks/cocos2d-x/tools/tolua文件夹,可以根据cocos2dxexperimentalvideo.ini编写生产cocos2dxexperimentalwebview.ini,也可以在github(https://github.com/coco......

小房小田
2015/06/11
4.3K
0
VS Code 的 Quick-Cocos2dx 开发插件 - vscode-QuickXDev

vscode-QuickXDev,强大的 Quick-Cocos2dx 开发工具,目前适配 Quick-Cocos2dx-Community 3.7.2 版。 针对 VS Code 的 Quick-Cocos2dx 开发插件,具有诸多特性,方便进行 Quick-Cocos2dx 游戏...

lonewolf
2018/09/03
327
0
cocos2d-x 3.0rc开发指南:Windows下Android环境搭建

Cocos2d-x 3.0rc开发指南:Windows下Android环境搭建 1. 配置JDK JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 本人的系统是Win7 64位版,但安装的是J...

扬名立万
2014/07/09
3.6K
0
cocos2dx学习日志(一) 总之先弄个能跑的apk出来吧!

新年新气象,新的一年已经开始好一阵子了。本着人在江湖,技多不压身的原则,最近的开始利用业余时间学习cocos2dx游戏引擎开发,话说自己写个游戏那是我儿时的梦想,哈。 废话不多说直接进正...

soso_fy
2014/02/26
0
0
cocos2dx 3.0正式版 在mac上新建项目

今天就分享mac 上 cocos2dx 3.0 正式版 创建一个新项目 下载cocos2dx 3.0正式版 下载好后打开终端,cd 进入 cocos2d-x-3.0/tools/cocos2d-console/bin 把cocos.py 拖到终端,然后确定 确定后...

千山万水
2014/06/02
968
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部