cocos2dx驱动lua
发布时间:2020-12-14 17:17:37 所属栏目:百科 来源:网络整理
导读:附带几篇交互方式 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层注册的事件 ,然后派
附带几篇交互方式 http://www.52php.cn/article/p-snrtiles-bre.html http://www.52php.cn/article/p-hsnziskm-bre.html http://www.52php.cn/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 me void 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对象,然后就能相互调用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |