Cocos2d-x 3 2 Lua示例 ClickAndMoveTest(点击移动测试)

这篇博客介绍了Cocos2d-x 3.2版本中使用Lua实现的ClickAndMoveTest,这是一个点击屏幕让对象移动的示例。文章适合初学者,内容通俗易懂。

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

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
Cocos2d-x 3.2 Lua示例 ClickAndMoveTest(点击移动测试)


 本篇博客介绍Cocos2d-x 3.2Lua示例中点击移动的例子,在这个例子你可以得到如何创建单点触摸的事件和注册事件监听回调方法。




示例代码:
--[[ClickAndMoveTest.lua点击与移动]]---- 获取屏幕尺寸local size = cc.Director:getInstance():getWinSize()local layer = nil -- 层local kTagSprite = 1 --精灵标记local function initWithLayer()    local sprite = cc.Sprite:create(s_pPathGrossini)    -- 添加颜色层,黄色    local bgLayer = cc.LayerColor:create(cc.c4b(255,255,0,255))    layer:addChild(bgLayer, -1)        -- 添加    layer:addChild(sprite, 0, kTagSprite)    -- 设置精灵位置到(20,150)    sprite:setPosition(cc.p(20,150))    -- 执行跳的动作,第一个参数为持续时间,第二个参数为位置,第三个参数为跳的高度,第四个参数跳的次数      sprite:runAction(cc.JumpTo:create(4, cc.p(300,48), 100, 4))    -- 背景层执行无限重复的动作序列,先淡进,再淡出    bgLayer:runAction(cc.RepeatForever:create(cc.Sequence:create(                                                 cc.FadeIn:create(1),                                                 cc.FadeOut:create(1))))    -- 触摸开始    local function onTouchBegan(touch, event)        return true    end    -- 触摸结束    local function onTouchEnded(touch, event)        -- 获取点击位置        local location = touch:getLocation()                -- 根据标记获取子节点        local s = layer:getChildByTag(kTagSprite)        s:stopAllActions()-- 停止所有动作        -- 执行移动动作,移动到点击的位置        s:runAction(cc.MoveTo:create(1, cc.p(location.x, location.y)))        local posX, posY = s:getPosition() -- 获取精灵的位置        local o = location.x - posX -- X轴的距离        local a = location.y - posY -- Y轴的距离        local at = math.atan(o / a) / math.pi * 180.0 --求角度 ,反正切函数求弧度/π*180.0        --1弧度= 180/π, 1度=π/180        -- 点击位置在下边        if a < 0 then            -- 点击位置在左边            if o < 0 then                at = 180 + math.abs(at)            else            -- 点击位置在右边                at = 180 - math.abs(at)            end        end        -- 执行旋转的动作        s:runAction(cc.RotateTo:create(1, at))    end    -- 单点触摸的监听器    local listener = cc.EventListenerTouchOneByOne:create()    -- 注册两个回调监听方法    listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )    listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )    local eventDispatcher = layer:getEventDispatcher()-- 时间派发器    -- 绑定触摸事件到层当中    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer)    return layerend---------------------------------- Click And Move Test--------------------------------function ClickAndMoveTest()    cclog("ClickAndMoveTest")    local scene = cc.Scene:create()    layer = cc.Layer:create()    initWithLayer()    scene:addChild(layer)    scene:addChild(CreateBackMenuItem())        return sceneend


Cocos2d-x有两种触摸事件,一种是单点触摸,一种是多点触摸,本篇博客例子使用的单点触摸事件。
EventListenerTouchOneByOne类
-- 单点触摸的监听器    local listener = cc.EventListenerTouchOneByOne:create()    -- 注册两个回调监听方法    listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )    listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )    local eventDispatcher = layer:getEventDispatcher()-- 时间派发器    -- 绑定触摸事件到层当中    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer)

最后的一个方法绑定节点到监听器中去,触摸优先级越低的越先被触摸。相同优先级的,后添加的先被触。

如果觉得博文对您有用处,请到下面链接为小巫投上神圣的一票。
           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值