cocos2d-x-lua 单点触摸事件

示例代码:

    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.添加到分发器中

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值