0

画面に触れたときにx軸で動かしたいキャラクターがいるゲームに取り組んでいます。私はこれに成功しましたが、一度だけ移動するのではなく、画面がタッチされている限り、オブジェクトが移動し続けることを望んでいます。これどうやってするの?

4

2 に答える 2

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 リスナーは、ボタンの状態が押されていることを確認すると、キャラクターを移動します。ここで、キャラクターを 1 ピクセルずつ 1 秒間に 30 回移動させたくない場合があるため、移動する小数ピクセル数を計算する必要があります。あなたの buttonPressed は、フラグをオンにして移動機能を機能させる方法になります。

于 2012-12-15T18:50:09.730 に答える
1

Runtimeオブジェクトでタッチリスナーを使用できます。

Runtime:addEventListener("touch", buttonPressed)

または、画面全体を覆う非表示のボタンを作成します。

于 2012-12-15T19:36:20.523 に答える