internal bool BubbleEvent(string strType, object data, List<EventBridge> addChain) { EventContext context = EventContext.Get(); context.initiator = this; context.type = strType; context.data = data; if (data is InputEvent) sCurrentInputEvent = (InputEvent)data; context.inputEvent = sCurrentInputEvent; List<EventBridge> bubbleChain = context.callChain; bubbleChain.Clear(); GetChainBridges(strType, bubbleChain, true); int length = bubbleChain.Count; for (int i = length - 1; i >= 0; i--) { bubbleChain[i].CallCaptureInternal(context); if (context._touchEndCapture) { context._touchEndCapture = false; if (strType == "onTouchBegin") Stage.inst.AddTouchEndMonitor(context.inputEvent.touchId, bubbleChain[i].owner); } } for (int i = 0; i < length; ++i) { bubbleChain[i].CallInternal(context); if (context._stopsPropagation) break; if (context._touchEndCapture) { context._touchEndCapture = false; if (strType == "onTouchBegin") Stage.inst.AddTouchEndMonitor(context.inputEvent.touchId, bubbleChain[i].owner); } } if (addChain != null) { length = addChain.Count; for (int i = 0; i < length; ++i) { EventBridge bridge = addChain[i]; if (bubbleChain.IndexOf(bridge) == -1) { bridge.CallCaptureInternal(context); bridge.CallInternal(context); } } } EventContext.Return(context); context.initiator = null; context.sender = null; context.data = null; return context._defaultPrevented; }
static int BubbleEvent(IntPtr L) { try { ToLua.CheckArgsCount(L, 3); FairyGUI.EventDispatcher obj = (FairyGUI.EventDispatcher)ToLua.CheckObject <FairyGUI.EventDispatcher>(L, 1); string arg0 = ToLua.CheckString(L, 2); object arg1 = ToLua.ToVarObject(L, 3); bool o = obj.BubbleEvent(arg0, arg1); LuaDLL.lua_pushboolean(L, o); return(1); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }