来自mc的AS3更新变量

时间:2014-08-26 04:03:34

标签: actionscript-3 flash

这应该很简单。 我想在舞台上播放3次电影剪辑,然后以闪光灯结束我的结局。

我在第1帧的主时间轴上实例化一个变量

var i:int = 0; 

并且在影片剪辑的最后一帧我要迭代我的变量

this.i += 1;
trace(this.i);

但我的痕迹返回未分配等。 我似乎使用了错误的操作符,但我没有尝试过任何工作..提前感谢。

2 个答案:

答案 0 :(得分:0)

您的解决方案

您可以在主时间轴上书写:

var i:int = 1;

在MovieClip的最后一帧:

if (MovieClip(parent).i++ == 3) stop();

另一种解决方案

您还可以使用其属性currentFrametotalFrames计算您的MovieClip播放次数。只需在主时间轴上写下:

var i:int = 0;

addEventListener(Event.ENTER_FRAME, timesIPlayed);

function timesIPlayed(e:Event):void {
    if (myMovieClip.currentFrame == myMovieClip.totalFrames) i++;
    if (i == 3) {
        myMovieClip.stop();
        removeEventListener(Event.ENTER_FRAME, timesIPlayed);
    }
}

答案 1 :(得分:0)

这举例说明了关注点的分离,例如解耦代码 - 但是除此之外,一些前AS2开发人员在AS3中用来替换全局变量的技巧是将变量附加到root。

例如 - 在主时间轴操作上,声明附加到root的变量:

主要时间表

MovieClip(root).myVar = 1;

现在,从任何地方(例如符号),您都可以访问同一个对象:

MovieClip时间表

MovieClip(root).myVar += 1;
trace(MovieClip(root).myVar);

作为替代方法,定义主文档类并使用静态变量将是更好的设计模式:

public class Main {
    public static var myVar:uint = 1;
}

然后,您可以在任何地方访问此静态变量:

Main.myVar += 1;
trace(Main.myVar);