Actionscript 3 AS3从mc更新根目录中的变量
这应该很简单。 我想在舞台上播放一段电影剪辑3次,然后在flash中进入我的结尾 我在第1帧的主时间线上实例化了一个变量Actionscript 3 AS3从mc更新根目录中的变量,actionscript-3,flash,Actionscript 3,Flash,这应该很简单。 我想在舞台上播放一段电影剪辑3次,然后在flash中进入我的结尾 我在第1帧的主时间线上实例化了一个变量 var i:int = 0; 在电影剪辑的最后一帧,我想迭代我的变量 this.i += 1; trace(this.i); 但我的跟踪返回未分配等。 我似乎用错了运算符,但我试过的都不管用。。提前感谢。您的解决方案 您可以在主时间线上书写: var i:int = 1; var i:int = 0; addEventListener(Event.ENTER_FRA
var i:int = 0;
在电影剪辑的最后一帧,我想迭代我的变量
this.i += 1;
trace(this.i);
但我的跟踪返回未分配等。
我似乎用错了运算符,但我试过的都不管用。。提前感谢。您的解决方案 您可以在主时间线上书写:
var i:int = 1;
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);
}
}
在你的电影唇的最后一帧:
if (MovieClip(parent).i++ == 3) stop();
另一种解决方案
您还可以使用MovieClip的属性和属性计算MovieClip被播放的次数。只需在主时间线上写下:
var i:int = 1;
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);
}
}
这是关注点分离的一个例子,比如代码解耦——然而,撇开它不谈,一些前AS2开发人员在AS3中使用的替换全局变量的技巧是将变量附加到根 例如-在主时间轴操作上,声明变量已附加到根: 主时间线
MovieClip(root).myVar = 1;
MovieClip(root).myVar += 1;
trace(MovieClip(root).myVar);
现在,您可以从任何位置(如符号)访问同一对象:
MovieClip时间线
MovieClip(root).myVar = 1;
MovieClip(root).myVar += 1;
trace(MovieClip(root).myVar);
作为替代方法,更好的设计模式是定义主文档类并使用静态变量:
public class Main {
public static var myVar:uint = 1;
}
然后,您可以在任何地方访问此静态变量:
Main.myVar += 1;
trace(Main.myVar);
您的代码:
MovieClip(root).myVar=1代码>被我的Flash编译器视为一个错误。1180:调用一个可能未定义的方法MovieClip。@helloflash编译时使用的是什么?你自己试一试吧——看我的。如果MovieClip
未定义,则导入它:import flash.display.MovieClip