2016-04-20 3 views
0

ここに状況があります。スクリーンに触れている限り、正方形のオブジェクトをy方向に連続的に移動したい。コードに基づいて、私は四角いオブジェクトの連続的な動きを与えなければならないが、私がタッチスクリーン上で自分の指で滑っているときだけ、オブジェクトは動く。私は同じ場所で画面に触れているときに正方形のオブジェクトを連続的に動かしたい。コロナSDKでは、バックグラウンド画面に触れながら移動し続けるオブジェクトを取得するにはどうすればよいですか?

私は、タイマーとランタイムイベントリスナーの両方を使用して無駄にしようとしました。ここの修正点は何ですか?

_W = display.contentWidth 
_H = display.contentHeight 


local background = display.newRect(0,0,_W,_H) 
background.anchorX = 0 
background.anchorY = 0 


local squareTimer 

local function squareMoveUp() 
    square.y = square.y - 5 
end  

local holding = 'false' 
local function startMove(event) 

    if event.phase == 'began' then 
     --Runtime:addEventListener('enterFrame',squareMoveUp) 
     squareTimer = timer.performWithDelay(200,squareMoveUp,0) 

    elseif event.phase == 'ended' then 
     --Runtime:removeEventListener('enterFrame',squareMoveUp) 

    end 
    return true 
end 

background:addEventListener('touch',squareMoveUp) 
+0

「背景」はフルスクリーンで表示されます。 – Albert

+0

です。私はちょうどそのコードを含んでいませんでした。 – MLhacker

答えて

0

これは、ちょうどあなたのオブジェクトの正方形を置き換え作品:

_W = display.contentWidth 
_H = display.contentHeight 


local background = display.newRect(0,0,_W,_H) 
background.anchorX = 0 
background.anchorY = 0 

local square = display.newRect(200,200,_W/3,_H/3) 
square:setFillColor(1,1,0) 

local squareTimer 
local touchStarted = false 


local holding = 'false' 
local function startMove(event) 

    if event.phase == 'began' then 
     --Runtime:addEventListener('enterFrame',squareMoveUp) 
     squareTimer = timer.performWithDelay(200,squareMoveUp,0) 
     touchStarted = true 
      local function squareMoveUp() 
       square.y = square.y - 0.02 
      end 

     for i = 1,1000 do 
      if touchStarted then 
        squareTimer = timer.performWithDelay(200,squareMoveUp,1) 
     end 
    end 

    elseif (event.phase == "ended") then 
      touchStarted = false 
    end 
    return true 
end 

background:addEventListener('touch',startMove) 
0

あなたは以下のようにコードを変更する必要があります。

_W = display.contentWidth 
_H = display.contentHeight 


local background = display.newRect(0,0,_W,_H) 
background.anchorX = 0 
background.anchorY = 0 

local square = display.newRect(200,200,_W/3,_H/3) 
square:setFillColor(1,1,0) 

local touchStarted = false 

local function startMove(event) 

     local function squareMoveUp() 
      if touchStarted then 
      square.y = square.y - 10 
      end 
     end 
if event.phase == 'began' then 
     touchStarted = true 
elseif (event.phase == "ended") then 
     touchStarted = false 
end 

timer.performWithDelay(200,squareMoveUp,0) 
end 

background:addEventListener('touch',startMove) 

または次のようなsquareMoveUpにコードを変更することができます:それはよりスムーズになりますtransition.moveTo(square, { y=square.y-10, 1 })の代わりsquare.y = square.y - 10