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类型参数,
网友评论