2014-03-26 39 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! 
}