Actionscript 3.0重复电影三次然后运行关闭帧

时间:2014-02-18 20:21:08

标签: actionscript-3

我有一个动画,我想循环三次,然后完成最后的帧,然后停止。我试过这段代码开始:

var stopNum = 0;
function looper(loopLimit) {
  if (stopNum>=loopLimit) {
    stop();
  } else {
    gotoAndPlay(2);
  }
  this.stopNum++;
}

此代码停止:

if (!loopCount) {
  var loopCount:Number = 0;
}
loopCount++;
if (loopCount >= 3) {
  this.stop();
}

我从这一点开始剩余的帧,然后整个动画停止。问题是帧循环三次,但包括所有帧,包括结束帧。

2 个答案:

答案 0 :(得分:0)

尝试使用Flash 10提供的一些事件,如下所示:

Event.FRAME_CONSTRUCTED

Event.EXIT_FRAME

虽然提出了一些想法,例如如果您的动画结束,请使用Event.EXIT_FRAME并保留计数器,这将告诉您动画播放的次数。

答案 1 :(得分:0)

在我的头顶,我会使用一个事件监听器来检查播放头何时前进为moiveclip(如Rajneesh所述)。在事件监听器中,我将检查它所处的帧,以及它是否在我的“结束循环帧”的末尾,然后我将检查是否需要循环它。如果是这样,那么我增加一个计数器以跟踪我循环的次数,并告诉movieclip转到开始帧并再次播放。

一旦它循环了足够多次,我就让它一直运行到最后一帧,然后停止动画。

我会猜测并假设你的动画片段有100帧,你只想让第1到第90帧循环2次,然后让它再播放1次,但是从第1帧到第100帧。共播放3个在停止之前,从1到90,然后是91到100。

import flash.display.MovieClip;
import flash.events.Event;

var clip:MovieClip = this.aCircle;

var timesPlayed:int = 0;
var timesToLoop:int = 3;
var frameToStartLoop:int = 1;
var frameToStopLoop:int = 90;

function enterFrameListener(inputEvent:Event):void {
    if(clip.currentFrame == frameToStopLoop){
        timesPlayed++;
        if(timesPlayed < timesToLoop){
            clip.gotoAndPlay(frameToStartLoop);
        }

    // if the currentFrame made it past the above condition, then
    // it means there is no more looping needed so just play till the end and stop.
    } else if(clip.currentFrame == clip.totalFrames){
        clip.stop();
        // can remove this listener now, as it is no longer needed
        clip.removeEventListener(Event.ENTER_FRAME, enterFrameListener, false);
    }
}
// use an event listener to listen for the ENTER_FRAME event, which is triggered everytime the movieclip advances a frame
// (as a side note, you'll also find that this event is triggerd even if there is only 1 frame, or even if the playhead is not actually moving, check the doc for details)
clip.addEventListener(Event.ENTER_FRAME, enterFrameListener, false, 0, true);