
附带几篇交互方式
http://www.jb51.cc/article/p-snrtiles-bre.html
http://www.jb51.cc/article/p-hsnziskm-bre.html
http://www.jb51.cc/article/p-xywazllr-bre.html
这里针对cocos2dx的实现
1...Scheduler::update 里面直接遍历lua层注册的事件 ,然后派发
#if CC_ENABLE_SCRIPT_BINDING // // Script callbacks // // Iterate over all the script callbacks if (!_scriptHandlerEntrIEs.empty()) { for (auto i = _scriptHandlerEntrIEs.size() - 1; i >= 0; i--) { SchedulerScriptHandlerEntry* eachEntry = _scriptHandlerEntrIEs.at(i); if (eachEntry->isMarkedForDeletion()) { _scriptHandlerEntrIEs.erase(i); } else if (!eachEntry->isPaused()) { eachEntry->getTimer()->update(dt); } } }#endif 2.Node 里面的事件
成员变量#if CC_ENABLE_SCRIPT_BINDING int _scriptHandler; ///< script handler for onEnter() & onExit(),used in JavaScript binding and Lua binding. int _updateScriptHandler; ///< script handler for update() callback per frame,which is invoked from lua & JavaScript. ccScriptType _scriptType; ///< type of script binding,lua or JavaScript#endif// overrIDe mevoID Node::update(float fDelta){#if CC_ENABLE_SCRIPT_BINDING if (0 != _updateScriptHandler) {//派发事件消息到lua //only lua use SchedulerScriptData data(_updateScriptHandler,fDelta); ScriptEvent event(kScheduleEvent,&data); ScriptEngineManager::getInstance()->getScriptEngine()->sendEvent(&event); }#endif if (_componentContainer && !_componentContainer->isEmpty()) { _componentContainer->visit(fDelta); }} 其他还有很多派发手段,大体思路就是通过ScriptEngine 来派发事件,因为大部分C++类 都通过tolua导出到lua的,导出类自动把lua的handle通过接口ScriptHandlerMgr::getInstance()->addobjectHandler绑定到cpp对象,然后就能相互调用
总结以上是内存溢出为你收集整理的cocos2dx驱动lua全部内容,希望文章能够帮你解决cocos2dx驱动lua所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)