先上代码和图
测试代码
function MainScene:onCreate()
-- add background image
self.bg = display.newSprite("MainSceneBg.jpg")
:move(display.center)
:addTo(self)
self.button = display.newSprite("PlayButton.png")
:move(display.center)
:addTo(self.bg)
local listener = cc.EventListenerTouchOneByOne:create()
listener:setSwallowTouches(true)
listener:registerScriptHandler(handler(self,self.onTouchBegan),cc.Handler.EVENT_TOUCH_BEGAN )
listener:registerScriptHandler(handler(self,self.onTouchMoved),cc.Handler.EVENT_TOUCH_MOVED )
listener:registerScriptHandler(handler(self,self.onTouchEnded),cc.Handler.EVENT_TOUCH_ENDED )
self:getEventDispatcher():addEventListenerWithSceneGraphPriority(listener, self.button)
end
function MainScene:onTouchBegan(touch,event)
local pos = touch:getLocation()
local target = event:getCurrentTarget()
if target:hitTest(pos,false) then
return true
end
return false
end
```
hitTest代码
function Node:hitTest(point, bCascade)
local nsp = self:convertToNodeSpace(point)
local rect
if bCascade then
rect = self:getCascadeBoundingBox()
else
rect = self:getBoundingBox()
end
if cc.rectContainsPoint(rect, nsp) then
return true
end
return false
end
```
箭头是我鼠标点的地方
debug的数据是hitTest里面的nsp和rect的数据
我想说的是nsp是相对于我的button的,而rect则是相对于button在父节点的位置,不是在同个一坐标系里面,所以检测出来nsp没有在rect里面 ,我认为nsp已经是以node为坐标系的话,那rect的x和y应该都是0,宽高就是本身的宽高,不知道我这样对不对?
