cocos2d lua 设置触摸回调

本文介绍了一个使用 Cocos2d-x 框架实现的游戏主场景示例代码,该场景中包含了一个可移动的地图元素,并通过触摸事件实现了地图的拖动效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



local MainScene = class("MainScene", function()
    return display.newScene("MainScene")
end)


function MainScene:ctor()
    self.layer = cc.Layer:create()
cc.ui.UILabel.new({
            UILabelType = 2, text = "Hello, World", size = 64})
        :align(display.CENTER, display.cx, display.cy)
        :addTo(self)
    self.map = cc.TMXTiledMap:create("test.tmx")
    self.layer:addChild(self.map, 0,1)
self.layer:addTo(self)

    local function onTouchesMoved(touches, event )
        --dump(event)
        local  n=#touches
        local diff = touches[1]:getDelta()
        local node = self.layer:getChildByTag(1)
        local currentPosX, currentPosY= node:getPosition()
        node:setPosition(cc.p(currentPosX + diff.x, currentPosY + diff.y))
    end
    

local listener = cc.EventListenerTouchAllAtOnce:create()

--关键的地方handler(self,self.onTouchesMoved1),直接设置listener:registerScriptHandler(self.onTouchesMoved1,cc.Handler.EVENT_TOUCHES_MOVED) 运行时会出错

    listener:registerScriptHandler(handler(self,self.onTouchesMoved1),cc.Handler.EVENT_TOUCHES_MOVED) 
    local eventDispatcher = self:getEventDispatcher()
    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self.layer)


end




function MainScene:onTouchesMoved1(touches, event )
    --dump(event)
    local  n=#touches
    local diff = touches[1]:getDelta()
    local node = self.layer:getChildByTag(1)
    local currentPosX, currentPosY= node:getPosition()
    node:setPosition(cc.p(currentPosX + diff.x, currentPosY + diff.y))
end


function MainScene:onEnter()
end


function MainScene:onExit()
end


return MainScene
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值