2011-08-26 37 views
1

我試圖複製'墨西哥波'的運動。我正在使用Flash CS5,並使用AS2。Flash中的墨西哥波浪效果

我已經創建了一個「跳線」圖形,並在一個剪輯中對其進行了動畫處理,以便它跳起一次 - 然後回落到地面。我已將剪輯拉入主時間線並複製了很多次,所以我有一排「跳線」。我已經給每個實例一個唯一的ID。然後我告訴每個剪輯實例開始播放,順序,使用下面的代碼:

var total_jumpers = 36; 
var i = 0; 
var jumpLag = 1000; 

function do_jump(bottle) { 
    jumper.play(); 
} 

for(i=1; i<=total_jumpers; i++) 
{ 
    var mcName:String = "b" + i; 
    jump = setInterval(do_jump,jumpLag,this[mcName]); 
    trace("Jumper " + mcName + ". Lag: " + jumpLag); 
    jumpLag += 100; 
} 

clearInterval(jump); 

stop(); 

在剪輯,我已經把停止()在最後一幀,試圖阻止它循環。

所以這工作正常,但剪輯似乎循環 - 我不能讓他們停下來。

我將不勝感激任何見解/協助。

回答

1

setInterval可能不是這樣做,因爲它不斷地重複,直到clearinterval被稱爲最好的辦法.. setInterval每個調用返回一個不同的ID - 認爲它作爲每個定時器的唯一ID。

調用clearInterval它實際上只清除最後一個時間間隔的代碼。需要爲setInterval返回的每個ID調用clearInterval。這需要將ID存儲在數組中,然後在動畫開始後調用clearInterval以獲取特定ID。

更好的方法是使用setTimeout(請參閱flash.utils.setTimeout),因爲它只運行一次然後死亡,這意味着您將不需要額外的邏輯來停止定時器。

+0

完美!謝謝。 – onblur

相關問題