我正在构建一个文档类为“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。
答案 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); }