外部预加载器导致TypeError

时间:2011-05-18 06:18:11

标签: flash actionscript-3 preloader

我正在构建一个文档类为“Main”的FLA文件,并在其构造函数中告诉它跟踪(阶段)。我添加了一个外部预加载器来加载这个SWF,但是你知道,trace语句显示为NULL。

这是当前正在运行的预加载器。

import flash.display.Loader;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.net.URLRequest;

var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
l.load(new URLRequest("Main.swf"));

function onProgress(e:ProgressEvent):void {
    preloader.mask.height = (e.bytesLoaded / e.bytesTotal) * preloader.lemon.height;
}

function onComplete(e:Event):void {
    removeChildAt(0);
}

对于Main.swf本身,这里是文档类:

package  {

    import Position;
    import flash.display.*;
    import flash.events.Event;

    public class Main extends MovieClip {

        public function Main():void {
            trace(stage);
        }
    }
}

////解决/// 我忘了把这个项目添加到舞台上但幸运的是在phillip的代码中我看到了这个。所以请记住,一旦Event.COMPLETE触发,将加载器的内容添加到舞台上,否则swf的文档类将显示为null。

1 个答案:

答案 0 :(得分:3)

你必须等到主要课程被添加到舞台上(Event.ADDED_TO_STAGE)。预加载器现在是舞台所有者......

如果您通过加载程序加载外部SWF,则必须先等待Event.INIT,这在加载完成后由加载程序触发,执行加载的swf的构造函数。如果您要将加载器内容添加到显示列表,也会触发ADDED_TO_STAGE事件。在将显示对象添加到舞台之前,舞台属性为空。

ldr //your loader

ldr.loaderInfo.addEventListener(Event.INIT,foo); ldr.load();

function foo(e:Event):void {     var content:* e.target.content;     addChild(content); }

相关问题