2012-01-30 39 views
0

正確工作我對科羅娜是比較新的,我仍然不確定我是否理解transition.to,所以請耐心與我並具體。我有一個「浮動」的對象(重力設置爲(0,-4))在屏幕上。所以它是一個「動態」的物理實體,它與所有其他物理實體進行正確的交互。碰撞聽衆正在完美地工作。但是,當對象(氣球)達到150的Y時,我希望對象在250毫秒內轉換到屏幕上較低的位置。但是當我運行我的代碼時,氣球會進入屏幕上的隨機點並且不一致。我無法讓我的動畫與transition.to

local function move(event) 

     If (balloon.y <= 150) then 
      transition.to(balloon, {time = 250, x = balloon.x, y = 320); 
     end 
    end 


    Runtime:addEventListener("enterFrame", move); 

我讀過,因爲enterFrame監聽器被調用每30-60ms,這需要更長時間將基本多次調用該函數,決不讓過渡到完成過渡。如果這是問題,有沒有更好的方法來做到這一點?

回答

1

如果您想防止重複呼叫,請在balloon上放置一個標記isInTransition(這是任意的)並檢查每個呼叫的狀態。

local function move(event) 

    if not balloon.isInTransition then 
     if (balloon.y <= 150) then 
      transition.to(balloon, {time = 250, x = balloon.x, y = 320) 
      balloon.isInTransition=true 
     elseif balloon.y == 320 then 
      balloon.isInTransition=nil 
     end 
    end 
end 

Runtime:addEventListener("enterFrame", move); 

物理系不能很好與過渡是否有與transition.to()混合物理相互作用(例如碰撞)工作。

如果您希望氣球移動到較低的位置而沒有碰撞,您可以嘗試balloon.isSensor=true/false

討論here關於類似於您的情況。

+0

非常感謝! – 2012-01-30 15:01:22