我有一个动画片段,其中包含第1帧的动作
this["myCustomVar"] = "bla";
然后我这样做:
var mc:MovieClip = new MyMovieClip();
trace(mc.hasOwnProperty("myCustomVar")); // is false
为什么动画片段没有myCustomVar
,或更普遍地说:
影片剪辑中的帧脚本何时完全执行?
答案 0 :(得分:1)
如果你使用的是flash 10,那么每帧有7个事件:
所以你可以听EXIT_FRAME事件,此时帧脚本应该运行并且应该设置var。
答案 1 :(得分:0)
我不认为帧脚本的时间安排是你问题的核心。对于上面的代码snippits,你会遇到类与实例的问题。我们来看看这一行:
this["myCustomVar"] = "bla";
在那里,您已在根时间轴实例中定义了一个名为myCustomVar
的新变量。实例是单独存在的,可以自定义的。但是,自定义一个实例不会更改最初定义它的类。想想一个小部件工厂:如果你从装配线末端取出一个完成的小部件并将其涂成红色,这并不意味着工厂现在将生成红色小部件......你刚刚改变了一个小部件实例行的结尾。为了使您的工厂生产红色小部件,您需要更改工厂本身 - 或类定义。那么,我假设你有一个为MyMovieClip
编写的自定义类?如果没有,您需要在MyMovieClip.as
:
package
{
import flash.display.MovieClip;
public class MyMovieClip extends MovieClip
{
public var myCustomVar:String = "";
public function MyMovieClip():void {
super();
}
}
}
一旦修改了对象的类定义以包含自定义变量,那么该类的所有新实例都将使用该变量构造。希望有所帮助。