Corona SDK多点触控运行和跳跃

兹德涅克·布劳恩(ZdeněkBraun)

我认为这应该很容易做到,但是我找不到任何解决方案。它总是公正的system.enable("multitouch"),然后使用setFocus()方法。我有一个右键,它可以响应触摸事件,并在按住时使播放器正确运行。然后,我有一个跳转按钮,该按钮响应轻击事件,使玩家跳转。跑步,跳跃作品,但是当我跑步并尝试跳跃时,什么也没有发生。这是一些代码:

local speed = 3
local motionx = 0    
-- When right arrow is touched, move character right
    function right:touch()
        if string.find(player.sequence,"jump") then
            player:setSequence("jumpRight")
            motionx = speed;
        elseif string.find(player.sequence,"duck") then
            player:setSequence("duckRight")
        else
            player:setSequence("goingRight")
            motionx = speed;
        end
        player:play()
    end
    right:addEventListener("touch",right)

    -- When up arrow is tapped, jump character
    function jump:tap()
        if not isJumping then
            if string.find(player.sequence, "goingRight") then
                isJumping = true
                player:setSequence("jumpRight")
                player:setLinearVelocity(0,-120)
            end
            if string.find(player.sequence, "goingLeft") then
                isJumping = true
                player:setSequence("jumpLeft")
                player:setLinearVelocity(0,-120)
            end
            if string.find(player.sequence, "duckLeft") then
                player:setSequence("goingLeft")
            end
            if string.find(player.sequence, "duckRight") then
                player:setSequence("goingRight")
            end
            player:play()
        end
    end
    jump:addEventListener("tap",jump)

    -- Move character
    local function movePlayer (event)
        player.x = player.x + motionx;
    end
    Runtime:addEventListener("enterFrame", movePlayer)

我不知道我应该在哪里,如何或为什么使用setFocus()方法。但是到目前为止,跑步时,直到松开右键,我才能跳起来。

兹德涅克·布劳恩(ZdeněkBraun)

我想使用TAP事件进行跳转是我的错误。我猜因为它被称为multiTOUCH,所以它仅适用于多个TOUCH事件:)我将TAP事件更改为TOUCH事件并添加了:

if event.phase == "began" then
        display.getCurrentStage():setFocus( event.target, event.id )
        --other code
end
if event.phase == "ended" or event.phase == "cancelled" then
        display.getCurrentStage():setFocus( event.target, nil )
end

现在,它可以很好地工作了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Corona SDK表

来自分类Dev

Corona SDK中的水平ScrollView

来自分类Dev

Corona SDK OpenSSL插件问题

来自分类Dev

Corona SDK的后台服务

来自分类Dev

Corona SDK Director类错误

来自分类Dev

Corona SDK OpenSSL插件问题

来自分类Dev

Corona SDK中的字体问题

来自分类Dev

Lua中的OOP和eventListener(Corona SDK)

来自分类Dev

Corona SDK作曲者和叠加层

来自分类Dev

Corona SDK InAPP还原并消除误导现象

来自分类Dev

创建随机图像Corona SDK Lua

来自分类Dev

Corona SDK event.target触摸/点击

来自分类Dev

简单的Corona SDK应用-触摸事件

来自分类Dev

Lua在Corona SDK混乱中的位置

来自分类Dev

适用于Mac的IDE for Corona SDK

来自分类Dev

在Corona SDK中实现事件记录

来自分类Dev

Lua在Corona SDK混乱中的位置

来自分类Dev

Corona SDK偏移量不好

来自分类Dev

Corona SDK:如何识别碰撞对象?

来自分类Dev

Corona SDK对象遵循“滑动”方向吗?

来自分类Dev

Twitter无法正确显示分数-Corona SDK

来自分类Dev

在Corona SDK中,如何停止功能?

来自分类Dev

Corona SDK / Lua无法使用外部模块

来自分类Dev

位置侦听器Corona SDK

来自分类Dev

Corona SDK 移动对象而不受重力影响

来自分类Dev

Corona SDK(LUA)产生对象和计时器问题

来自分类Dev

Corona SDK(LUA)计时器和倒计时

来自分类Dev

Corona SDK-display.newImageRect无法正常工作

来自分类Dev

Corona SDK如何向DisplayObject添加自定义方法