2

我正在尝试向 MovieClip 添加一个 init() 函数,但是当我从场景 1 运行该函数时,尚未定义在 MovieClip 中设置的变量... MovieClip 已从库中拖到舞台上。

场景1:

mc.init(null);

影片剪辑:

var _default = 5;

function init(num) {
     if(num == null) {
          trace(_default);
     } else {
          trace(num);
     }
}

这是跟踪“未定义”而不是“5”;有没有办法解决这个问题?

4

1 回答 1

1

问题是直接放置在主时间轴中的任何代码将始终在直接位于 MovieClip 中的代码之前运行。

解决这个问题的方法是让 flash 先在时间轴和 MovieClip 中完成该代码的运行,然后在完成后从时间轴调用该函数。

最简单的方法是使用事件监听器:

时间线:

addEventListener( Event.ENTER_FRAME, onEnterFrame );

function onEnterFrame( e:Event ):void {
    myObject.init(null);
    removeEventListener( Event.ENTER_FRAME, onEnterFrame );
}

这样,时间线将等到第一帧开始调用 MovieClip 的 init 函数。

于 2011-03-06T16:58:51.310 回答