function PuzzleLayer:onEnter()
local s = cc.Director:getInstance():getWinSize()
local function closeCallback()
--cc.Director:getInstance():endToLua()
print("closeCallback")
end
-- add close menu
local closeItem = cc.MenuItemImage:create("CloseNormal.png", "CloseSelected.png")
closeItem:registerScriptTapHandler(closeCallback)
closeItem:setPosition(s.width - 20, 20)
local closeMenu = cc.Menu:create()
closeMenu:setPosition(0, 0)
closeMenu:addChild(closeItem)
self:addChild(closeMenu)
local function onTouchBegan(touch, event)
print("touch began")
end
local listener = cc.EventListenerTouchOneByOne:create()
listener:setSwallowTouches(true)
self._listener = listener
listener:registerScriptHandler(onTouchBegan, cc.Handler.EVENT_TOUCH_BEGAN)
local eventDispatcher = self:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, closeItem)
end
```
以上是本人的一段代码,PuzzleLayer继承自一个Layer,我发现点击到closeItem时会先打印出"touch began", 再打印"closeCallback".
但如果是点击到窗口中的其他地方(未点击到closeItem),就只打印"touch began"。这是怎么回事呢,与我的预期不一致呀。
据我的理解,这个listener是被关联到closeItem,当点击到closeItem时才会触发onTouchBegan,如果没点击到closeItem的话,应该不会触发,可事实是会触发,这是怎么回事呢,求解答下!
是不是在区域中,不是要自己判断吗
自己在代码中判断,我知道可以实现的。那说说第二个参数的含义吧?