我认为这应该很容易做到,但是我找不到任何解决方案。它总是公正的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()方法。但是到目前为止,跑步时,直到松开右键,我才能跳起来。
我想使用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] 删除。
我来说两句