2012-12-15 58 views
0

我正在制作一款游戏,其中我有一个角色,当屏幕被触摸时,我想在x轴上移动。我设法做到了这一点,但是只要屏幕被触摸,而不是只移动一次,我就希望对象继续移动。我怎样才能做到这一点?Corona SDK:如何使对象移动

回答

1

您可以在运行时对象上使用触摸监听器:

Runtime:addEventListener("touch", buttonPressed) 

,或者创建一个不可见的按钮覆盖整个屏幕。

+0

正如我所说的那样,当屏幕被触摸时,角色不会继续移动。 – Dangerosking

+0

您仍然需要enterFrame才能使用它。触摸只是打开一个标志,enterFrame需要知道是否移动字符。 –

+0

enterFrame事件似乎没有在任何点触发 – Dangerosking

2

Corona SDK中的触摸事件只发生在某些事情发生变化时,例如触摸开始,结束或检测到手指移动时。如果你想在按钮被按下的时候继续下去,它将需要一个“enterFrame”事件。

local buttonPressed = false 

local function moveCharacter(event) 
    if buttonPressed then 
     character.x = characterx + 1 
    end 
end 

local function buttonPressed(event) 
    if event.phase == "began" then 
      buttonPressed = true 
    elseif event.phase == "ended" then 
      buttonPressed = false 
    end 
    return true 
end 

local myButton = display.newRect(0,0,64,48) 
myButton:addEventListenr("touch", buttonPressed) 

Runtime:addEventListener("enterFrame", moveCharacter) 

在这种情况下,enterFrame监听器会在按钮的状态被按下时移动角色。现在,您可能不希望每秒将字符移动一个像素30次,因此您需要确定移动它的像素数量。你的buttonPressed只是成为一种方法来打开一个标志,导致移动功能的工作。

+0

我真的不想添加一个按钮,我认为他们浪费空间,是不是有其他方法呢?我已经研究过使用翻译,但角色只是飞离屏幕。 – Dangerosking

+0

添加一个覆盖整个屏幕的隐形按钮: –

+0

如果我这样做了,我只能在一个方向上移动角色 – Dangerosking