在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在cocos-lua使用ccb动画播放攻击完成以后,加点绚丽的特效,需要使用C++中setAnimationCompletedCallback方法,很无奈没有发现C++与lua的相互调用,只能补充添加了。 /* 出处: cocosbuilder/CCBAnimationManager.h文件 作用: 动画完成回调 */ void setAnimationCompletedCallback(cocos2d::Ref *target, cocos2d::SEL_CallFunc callbackFunc); 首先我们要做的是找到关于CCBAnimationManager中的lua与C++的注册接口,即: // 在lua_cocos2dx_cocosbuilder_auto.cpp中,该接口用于添加C++与lua交互的所有CCBAnimationManager相关的实现方法
在该接口内,我们添加新的静态方法调用: // 在lua_cocos2dx_cocosbuilder_auto.cpp中 然后,我们依然在lua_cocos2dx_cocosbuilder_auto.cpp中,编写关于lua_cocos2dx_cocosbuilder_CCBAnimationManager_setAnimationCompletedCallback方法相关,如下: static int lua_cocos2dx_cocosbuilder_CCBAnimationManager_setAnimationCompletedCallback(lua_State* tolua_S) { 2. 接着开始创建LuaCCBAnimationWrapper.h和LuaCCBAnimationWrapper.cpp的文件,其目录大家自定义,能够调用到,方便维护就行了哈。 (1) LuaCCBAnimationWrapper.h #ifndef __LuaCCBanimationWrapper_H_ #define __LuaCCBanimationWrapper_H_ #include "cocos2d.h" USING_NS_CC; using namespace std; class LuaCCBAnimationWrapper : public Ref { public: LuaCCBAnimationWrapper(); ~LuaCCBAnimationWrapper(); void animationCompletedCallback(); void setCallback(unsigned nFuncID); private: CallFunc *pCCCallFunc; unsigned int m_nFuncID; }; #endif (2) LuaCCBAnimationWrapper.cpp #include "LuaCCBAnimationWrapper.h" #include "CCLuaEngine.h" LuaCCBAnimationWrapper::LuaCCBAnimationWrapper() :pCCCallFunc(NULL), m_nFuncID(0) { // } LuaCCBAnimationWrapper::~LuaCCBAnimationWrapper() { // } void LuaCCBAnimationWrapper::setCallback(unsigned int nFuncID) { CCLOG("LuaCCBAnimationWrapper::setCallback(nFuncID = %i)", nFuncID); m_nFuncID = nFuncID; } void LuaCCBAnimationWrapper::animationCompletedCallback() { /* 2.x if (0 != m_nFuncID) { CallFunc *CallFuncTmp = CallFunc::create(); CallFuncTmp->execute(); m_nFuncID = 0; //TODO 当动画循环播放时会报错,记得修改 } */ //3.x if (0 != m_nFuncID) { LuaStack* stack = LuaEngine::getInstance()->getLuaStack(); stack->executeFunctionByHandler(m_nFuncID, 1); m_nFuncID = 0; } }
参考:http://blog.csdn.net/playddt/article/details/43230045 感谢原作者分享!
|
请发表评论