博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cocos2dx-3.0-rc0版本Lua的配置与使用
阅读量:6325 次
发布时间:2019-06-22

本文共 3220 字,大约阅读时间需要 10 分钟。

hot3.png

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方法

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

         这一步参考了这篇博客()。

         总结了一下步骤:

                   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接口。

转载于:https://my.oschina.net/u/1414326/blog/221039

你可能感兴趣的文章
Android总结篇系列:Android 权限
查看>>
R学习笔记 第五篇:字符串操作
查看>>
在Mac OS下配置PHP开发环境
查看>>
(转)介绍下Nuget在传统Asp.net项目中的使用
查看>>
C# ArcEngine 实现点击要素高亮并弹出其属性
查看>>
c#线程初探(一)
查看>>
初识GO语言——安装Go语言
查看>>
SDK命令行操作
查看>>
基于Bootstrap的DropDownList的JQuery组件的完善版
查看>>
EXTJS学习系列提高篇:第二十四篇(转载)作者殷良胜,ext2.2打造全新功能grid系列--阅增删改篇...
查看>>
Hadoop MapReduce编程 API入门系列之分区和合并(十四)
查看>>
判断二叉树是否平衡、是否完全二叉树、是否二叉排序树
查看>>
并查集的应用之求解无向图中的连接分量个数
查看>>
7个神奇的jQuery 3D插件
查看>>
在线浏览PDF之PDF.JS (附demo)
查看>>
波形捕捉:(3)"捕捉设备"性能
查看>>
AliOS Things lorawanapp应用介绍
查看>>
美国人的网站推广方式千奇百怪
查看>>
Shashlik:Linux 上运行 Android 应用的新法子
查看>>
《精解Windows8》——2.13 常用快捷键
查看>>