Actionscript 3 如何从实例化的子类将外部swf加载到主阶段?
我试图获得一个类的实例来加载一个外部swf并显示它。 到目前为止,我有以下几点: 1) 我编写了一个类,它使用Loader类来加载外部swf“loadExtSWF”。 2) 我有一个名为“MainSWF.fla”的fla,它使用一个文档类“MainSWF.as”。 3) 我有MainSWF.as文件,它引用“loadExtSWF”并调用loadExtSWF.startoad来加载swf 这几乎奏效了。loadExtSWF实例加载外部swf,但不显示swf 如果我将fla的document类替换为loadExtSWF(这有一个空的构造函数)而不是MainSWF,并运行loadExtSWF.startLoad,则会加载并显示外部swf 我最初的做法似乎将swf加载到了错误的阶段(?) 有什么想法吗?谢谢你的帮助 再见, 拉米 附言 如果将test_tscreen的文档类从test_tscreen.as替换为tsscreen.as,并删除test_tscreen的构造函数中的注释,则将加载swf 我的代码是: 文件test_as3.swf 外部as3 swf文件 文件test_tscreen.fla fla为空,引用test_tscreen.as作为其文档类 文件test_tscreen.as 文件TSScreen.asActionscript 3 如何从实例化的子类将外部swf加载到主阶段?,actionscript-3,reference,flash,load,loader,Actionscript 3,Reference,Flash,Load,Loader,我试图获得一个类的实例来加载一个外部swf并显示它。 到目前为止,我有以下几点: 1) 我编写了一个类,它使用Loader类来加载外部swf“loadExtSWF”。 2) 我有一个名为“MainSWF.fla”的fla,它使用一个文档类“MainSWF.as”。 3) 我有MainSWF.as文件,它引用“loadExtSWF”并调用loadExtSWF.startoad来加载swf 这几乎奏效了。loadExtSWF实例加载外部swf,但不显示swf 如果我将fla的document类替换为
正如有时发生的那样,问这个问题可以找到你的答案。在阅读了手册之后,我再次看到,一旦在AS3中添加了新的swf,就需要将新的DisplayObject作为子对象添加到现有DisplayObjectContainer中的现有DisplayObject中 所以,我遇到的问题是,我正确加载了外部swf,但没有将其添加到显示列表中,因此它没有显示 下面是我前面引用的代码块的固定版本 test_tscreen.as 包装{
import flash.display.MovieClip;
import TSScreen;
public class test_tsscreen extends MovieClip{
var tsScreen1:TSScreen;
public function test_tsscreen(){
tsScreen1 = new TSScreen(10,10,100,100,0.5,0);
//tsScreen1 = new TSScreen();
this.addChildAt(tsScreen1,1);
}
}
}
TSScreen.as
包装{
导入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 {
private var _xPos:int;
private var _yPos:int;
private var _width:int;
private var _height:int;
private var _xScale:int;
private var _yScale:int;
private var _visible:Boolean;
private var _alpha:Boolean;
private var _shadow:Boolean;
private var _backgroundColor:uint;
private var _rotation:Boolean;
private var _displayTime:int;
public function TSScreen():void{
startLoad();
}
function startLoad() {
var mLoader:Loader = new Loader();
var mRequest:URLRequest = new URLRequest("C:/FlashProjects/test_as3.swf");
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
addChild(mLoader);
mLoader.load(mRequest);
}
function onCompleteHandler(loadEvent:Event) {
addChild(loadEvent.currentTarget.content);
}
function onProgressHandler(mProgress:ProgressEvent) {
var percent:Number = mProgress.bytesLoaded/mProgress.bytesTotal;
trace(percent);
}
}
}
如果您想了解更多的信息,请参阅《FrasFaseFraseActionScript 3与Flash CS3》的第04章,该书包含了对本课题的有益介绍。
希望这能帮助其他人解决同样的问题。与本书相关的有用资源是Ed之友的下载页面请查看zip文件中的资源文件,以了解第04章
import flash.display.MovieClip;
import TSScreen;
public class test_tsscreen extends MovieClip{
var tsScreen1:TSScreen;
public function test_tsscreen(){
tsScreen1 = new TSScreen(10,10,100,100,0.5,0);
//tsScreen1 = new TSScreen();
this.addChildAt(tsScreen1,1);
}
}
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 {
private var _xPos:int;
private var _yPos:int;
private var _width:int;
private var _height:int;
private var _xScale:int;
private var _yScale:int;
private var _visible:Boolean;
private var _alpha:Boolean;
private var _shadow:Boolean;
private var _backgroundColor:uint;
private var _rotation:Boolean;
private var _displayTime:int;
public function TSScreen():void{
startLoad();
}
function startLoad() {
var mLoader:Loader = new Loader();
var mRequest:URLRequest = new URLRequest("C:/FlashProjects/test_as3.swf");
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
addChild(mLoader);
mLoader.load(mRequest);
}
function onCompleteHandler(loadEvent:Event) {
addChild(loadEvent.currentTarget.content);
}
function onProgressHandler(mProgress:ProgressEvent) {
var percent:Number = mProgress.bytesLoaded/mProgress.bytesTotal;
trace(percent);
}
}