我正在尝试获取一个类的实例来加载外部 swf 并显示它。到目前为止,我有以下内容: 1) 我编写了一个使用 Loader 类加载外部 swf“loadExtSWF”的类。2) 我有一个名为“MainSWF.fla”的 fla,它使用文档类“MainSWF.as”。3) 我有 MainSWF.as 文件,它实例化“loadExtSWF”并调用 loadExtSWF.startLoad 来加载 swf。
这几乎可以工作。loadExtSWF 的实例加载外部 swf,但 swf 不显示。
如果我用 loadExtSWF(它有一个空的构造函数)而不是 MainSWF 替换 fla 的文档类,然后运行 loadExtSWF.startLoad,那么外部 swf 会被加载并显示。
似乎我最初这样做的方式是将 swf 加载到错误的阶段(?)。
有任何想法吗?谢谢您的帮助。
再见,RaamEE
附言
如果将 test_tsscreen 的文档类从 test_tsscreen.as 替换为 TSScreen.as,并删除 test_tsscreen 构造函数中的注释,则将加载 swf。
我的代码是:
文件 test_as3.swf
外部 as3 swf 文件。
文件 test_tsscreen.fla
fla 为空并引用 test_tsscreen.as 作为其文档类。
文件 test_tsscreen.as
package {
import flash.display.MovieClip;
import TSScreen;
public class test_tsscreen extends MovieClip{
var tsScreen1;
public function test_tsscreen(){
// var tsScreen1:TSScreen = new TSScreen(10,10,100,100,0.5,0);
var tsScreen1:TSScreen = new TSScreen();
tsScreen1.startLoad(this.stage);
}
}
}
文件 TSScreen.as
package {
import flash.display.MovieClip;
import flash.display.*;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
import flash.display.Loader;
import flash.events.Event;
import flash.events.ProgressEvent;
public class TSScreen extends MovieClip implements ITSScreenable{
public function TSScreen():void{
// startLoad(this); //Look important comment in above text
}
function startLoad(_this:Stage) {
var mLoader:Loader = new Loader();
var mRequest:URLRequest = new URLRequest("test_as3.swf");
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
_this.parent.addChild(mLoader);
mLoader.load(mRequest);
trace(this.name);
trace(_this.name);
}
function onCompleteHandler(loadEvent:Event) {
addChild(loadEvent.currentTarget.content);
}
function onProgressHandler(mProgress:ProgressEvent) {
var percent:Number = mProgress.bytesLoaded/mProgress.bytesTotal;
trace(percent);
}
}
}