Cocos2dx的Lua引擎中的事件响应机制

void ScriptEngineManager::sendNodeEventToLua(Node* node, int action);

根据action及node创建ScriptEvent,通过scriptEngine的sendEvent方法发送。

enum ScriptEventType

{

kNodeEvent = 0,

许多种

}

sendEvent方法中,会根据Event类型,调用相应的handleXXXEvent()

如int LuaEngine::handleNodeEvent(void* data)中

首先

int handler = ScriptHandlerMgr::getInstance()->getObjectHandler(basicScriptData->nativeObject, ScriptHandlerMgr::HandlerType::NODE);

该handler用于获取相应的回调处理函数

接着根据action,确定参数,是“enter”还是“exit”等

随后

int ret = _stack->executeFunctionByHandler(handler, 1);

----------------------------------------------------------

再举例

handleCallFuncActionEvent(void* data)

以相似方式获取nativeObject的CALLFUNC函数的handler

之后executeFunctionByHandler(handler, target ? 1 : 0);

target为可选cc.Node类型参数,

你可能感兴趣的:(Cocos2dx的Lua引擎中的事件响应机制)