1. 问题描述
有node A和node B两个节点
两个节点都设置了cc.NODE_TOUCH_EVENT事件
B节点的层级比A节点高
并且node B节点设置了吞噬: setTouchSwallowEnabled(true)
点击触发时, 希望只触发node B事件, 吞噬node A事件
结果发现吞噬无效, 两个节点的事件均被触发
local nodeA = ...
nodeA:addNodeEventListener(cc.NODE_TOUCH_EVENT, function(event)
-- do A stuff
end)
nodeA:setTouchEnabled(true)
nodeA:setTouchSwallowEnabled(true)
local nodeB = ...
nodeB:addNodeEventListener(cc.NODE_TOUCH_EVENT, function(event)
-- do B stuff
end)
nodeB:setTouchEnabled(true)
nodeB:setTouchSwallowEnabled(true)
2. 问题解决
查阅后发现,需要在node B注册事件函数那里对event.begin返回true才能正确实现吞噬
local nodeB = ...
nodeB:addNodeEventListener(cc.NODE_TOUCH_EVENT, function(event)
-- 加上这一句
if event and event.name == "began" then return true end
-- do B stuff
end)
nodeB:setTouchEnabled(true)
nodeB:setTouchSwallowEnabled(true)
好了, 现在只会触发node B的事件, 而吞噬node A的事件了














网友评论