美文网首页
cocos2dx setTouchSwallowEnabled(

cocos2dx setTouchSwallowEnabled(

作者: 沫晚霞光 | 来源:发表于2019-10-22 20:11 被阅读0次

1. 问题描述

node Anode 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的事件了

相关文章

网友评论

      本文标题:cocos2dx setTouchSwallowEnabled(

      本文链接:https://www.haomeiwen.com/subject/bejcvctx.html