—————————————————————————绑定自定义类到lua——————————————————————————————————
1:
/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/lib/cocos2d-x/external下面建立一个文件夹如:helper,并在
这个文件夹下建立自己的自定义
2:在/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/lib/cocos2d-x/external/luabinding下的cocos2dx_extra_luabinding.tolua
里添加自定义类的头文件(去掉不要的只留方法)
3:执行/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/lib/cocos2d-x/external/luabinding下面的build.bat,命令会把自定义类添加到
该目录下的cocos2dx_extra_luabinding.cpp和cocos2dx_extra_ios_iap_luabinding.cpp文件中,quick所有的外部绑定类即extra目录下的自定定义类都被统一放到这里
命令执行如下所示:
command: "/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/bin/mac/tolua++" -E CCOBJECTS=CCHTTPRequest -L "/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/bin/lib/compile_luabinding_config.lua" -o "/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/lib/cocos2d-x/external/extra/luabinding/cocos2dx_extra_luabinding.cpp" "cocos2dx_extra_luabinding.tolua"
creating file: /Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/lib/cocos2d-x/external/extra/luabinding/cocos2dx_extra_luabinding.cpp
creating file: /Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/lib/cocos2d-x/external/extra/luabinding/cocos2dx_extra_luabinding.h
----------------------------------------
// add to AppDelegate.cpp
#include "cocos2dx_extra_luabinding.h"
// add to AppDelegate::applicationDidFinishLaunching()
CCLuaStack* stack = CCScriptEngineManager::sharedManager()->getScriptEngine()->getLuaStack();
lua_State* L = stack->getLuaState();
luaopen_cocos2dx_extra_luabinding(L);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
command: "/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/bin/mac/tolua++" -L "/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/bin/lib/compile_luabinding_config.lua" -o "/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/lib/cocos2d-x/external/extra/luabinding/cocos2dx_extra_ios_iap_luabinding.cpp" "cocos2dx_extra_ios_iap_luabinding.tolua"
creating file: /Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/lib/cocos2d-x/external/extra/luabinding/cocos2dx_extra_ios_iap_luabinding.cpp
creating file: /Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/lib/cocos2d-x/external/extra/luabinding/cocos2dx_extra_ios_iap_luabinding.h
----------------------------------------
// add to AppDelegate.cpp
#include "cocos2dx_extra_ios_iap_luabinding.h"
// add to AppDelegate::applicationDidFinishLaunching()
CCLuaStack* stack = CCScriptEngineManager::sharedManager()->getScriptEngine()->getLuaStack();
lua_State* L = stack->getLuaState();
luaopen_cocos2dx_extra_ios_iap_luabinding(L);
4:打开/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/player/proj.mac/quick-x-player.xcodeproj工程,在项目的相应位置添加
自定义类(目录),重新编译;编译时如果报错,Vailid Architectures选择x86_64
5:lua中使用:
print(tolua.type(CCDGHelper.createWithdImg))
local texture=CCDGHelper:createWithdImg("resource/XiaHouYuanA(2).jpg","resource/XiaHouYuan.jpg")
local sp=CCSprite:createWithTexture(texture)
self:addChild(sp,1000)
sp:setPosition(CCPoint(display.cx,display.cy))
sp:setScale(0.55)
6:重新编译framework_precompiled.zip文件
7:安卓打包注意:
build_native.sh编译时会根据/Users/lcomplete/Documents/xinsanguozhi/quick-cocos2d-x/lib/cocos2d-x目录下的所有文件夹下的Android.mk
来编译自定义的类,所以要把我们自己加的类添加到相应目录的Android.mk下,一般是添加到external/extra下的目录中,所以要在该目录 下的Android.mk
中添加我自定义的类;然后再android工程下的build_native.sh编译libcocos2d.so库文件,编译成功后就可以打包APK了
注意:quick-cocos2d不需要添加libcocos库工程项目,所以不需要在eclips里添加库工程和引用,因为builc_native.sh已经把库工程编译成.so文件并引用