cocos2d-x-lua 單點觸控事件
阿新 • • 發佈:2019-02-03
示例程式碼:
local player = cc.Sprite:create(fileName) player:runAction(self:flyaction()) --touch move -- player:setTouchEnabled(true) -- "setTouchEnabled" is not use In cocos2d-x3.3,改為直接在onTouchBegan裡判斷,如果返回false,不能被觸控 function onTouchBegan(pTouch,pEvent) local point = pTouch:getLocation() local rect = player:getBoundingBox() if (cc.rectContainsPoint(rect,point)) then return true; end return false; end function onTouchEnded(pTouch,pEvent) end function onTouchMoved(touch, event) local posX,posY = player:getPosition() --獲取當前的位置 local delta = touch:getDelta() --獲取滑動的距離 player:setPosition(cc.p(posX + delta.x, posY + delta.y)) --給精靈重新設定位置 end local listener1 = cc.EventListenerTouchOneByOne:create() --建立一個單點事件監聽 listener1:setSwallowTouches(true) --是否向下傳遞 --註冊三個回撥監聽方法 listener1:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN ) listener1:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED ) listener1:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED ) local eventDispatcher = player:getEventDispatcher() --事件派發器 eventDispatcher:addEventListenerWithSceneGraphPriority(listener1, player) --分發監聽事
注意在場景退出的時候移除監聽:
function Syplayer:onExit()
local eventDispatcher = self:getEventDispatcher()
eventDispatcher:removeEventListener(self.listener1)
self:cleanup()
end
cocos2d-x 3.x Lua 中事件監聽:
有3中touch的方式,分別和cocos2dx裡的三種對應:
onTouchBegan cc.Handler.EVENT_TOUCH_BEGAN
onTouchMoved cc.Handler.EVENT_TOUCH_MOVED
onTouchEnded cc.Handler.EVENT_TOUCH_ENDED
要實現touch的相關動作:存在一個監聽器listen
1.建立監聽器listen;2.註冊;3.事件派發給誰;4.新增到分發器中