2014-03-26 77 views
0

我試圖讓動畫片段在特定幀開始,播放3次然後停止。我的動畫片段位於關鍵幀中。我嘗試了幾種不同的方法,不能限制循環 - 它只是繼續前進。在動作腳本中循環動畫片段3

首先,我試圖在幀1嵌入此作爲MovieClip(mc_enlightened_nut_glow)內:

for (var i:Number=1; i<=3;i++){ 
    this.gotoAndPlay(1) 
} 
this.stop(); 

然後,我試圖消除該AS,並把此在整個電影的最後一幀(幀132)我停下了();

for (var i:Number=1; i<=3;i++){ 
mc_enlightened_nut_glow.gotoAndPlay(1) 
} 
stop(); 

在這兩種情況下,剪輯只是繼續播放。我究竟做錯了什麼?

回答

2
var loopCounter:int = 0; 

最後一幀

if(loopCounter < 3){ 
    gotoandPlay(1); 
    loopCounter ++; 
} 
1

在第一幀:

var currentLoops:uint = 0; 
var maxLoops:uint = 10; // desired loops 

在第二幀:

currentLoops++; 
if (currentLoops == maxLoops) { 
    stop(); 
} 

在最後一幀:

gotoAndPlay(2); // the frame with the second code (increasing current loops) 

粗糙,但應能正常工作。

2

您需要一個在MovieClip動畫的「循環」之前定義的變量(例如,在第1幀 - var counter:int = 0),該變量在幀132處遞增。此時,檢查變量是否增加爲值大於或等於3並停止,如果是這樣。否則gotoAndPlay(2)。
這是假設你不想把你的代碼放在一個外部.as文件中 - 這是一種更加靈活的工作方式。

1

你不需要任何迭代。則需要在弗里斯特幀碼,和最後一個(框132),以及用於存儲電流環的變量:

作爲在第一幀的代碼:

if(this.loopCount == undefined){ 
    //Initiate our stuff 
    //Only 3 loops... 
    this.loopCount = 3; 
    //Code will be invoked only once 
    //Deside here, about your starting frame 
    //Start first time from the third frame 
    gotoAndPlay(3); 
} 

代碼最後一幀:

//We have visited last frame 
if(--this.loopCount <= 0){ 
    stop(); 
    //No more loops! 
}