这应该很简单。 我想在舞台上播放3次电影剪辑,然后以闪光灯结束我的结局。
我在第1帧的主时间轴上实例化一个变量
var i:int = 0;
并且在影片剪辑的最后一帧我要迭代我的变量
this.i += 1;
trace(this.i);
但我的痕迹返回未分配等。 我似乎使用了错误的操作符,但我没有尝试过任何工作..提前感谢。
答案 0 :(得分:0)
您的解决方案
您可以在主时间轴上书写:
var i:int = 1;
在MovieClip的最后一帧:
if (MovieClip(parent).i++ == 3) stop();
另一种解决方案
您还可以使用其属性currentFrame
和totalFrames
计算您的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);