这里有个基本问题。通常在AS3中通过Loader加载SWF文件,并且您得到的是某种类型为“Loader”的伪MovieClip。AS3,作为自定义类型在SWF中加载
有没有在阳光下的圣洁的方式来施放此加载的SWF到扩展影片剪辑,而不是装载机,假设SWF用基类的自定义类型的发布自定义类型?没有数据丢失?
或者,让我们说你不能,你甚至从延伸到Loader本身的自定义类型转换呢?
这里有个基本问题。通常在AS3中通过Loader加载SWF文件,并且您得到的是某种类型为“Loader”的伪MovieClip。AS3,作为自定义类型在SWF中加载
有没有在阳光下的圣洁的方式来施放此加载的SWF到扩展影片剪辑,而不是装载机,假设SWF用基类的自定义类型的发布自定义类型?没有数据丢失?
或者,让我们说你不能,你甚至从延伸到Loader本身的自定义类型转换呢?
你可以做这样的事情:
代码存根SWF:
package {
import flash.display.MovieClip;
public class Stub extends MovieClip implements IStub {
public function Stub() {
trace("Stub::ctor");
}
public function traceIt(value:String):void {
trace("Stub::traceIt " + value);
}
}
}
我使用的接口,但它不是严格neccesary。
package {
public interface IStub {
function traceIt(value:String):void;
}
}
“main”swf中的代码。
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT,handleInit);
loader.load(new URLRequest("Stub.swf"));
function handleInit(e:Event):void {
var stub:Stub = loader.content as Stub;
// or, using an interface
// var stub:IStub = loader.content as IStub;
stub.traceIt("testing");
}
据对this article in the LiveDocs评论,你可以投Loader.content到影片剪辑和访问的方式。
但是,有一些限制。例如,SWF本身必须是AS3 SWF文件,执行加载的SWF和加载的SWF应共享相同的沙箱。
是的,loader.content让你访问任何被加载。你应该能够简单地将其转换为任何你想要的。
或者,你必须扩展装载机,它已经扩展级DisplayObjectContainer所以你有最的影片剪辑的功能开始与选项。在这种情况下,编写它,以便您可以简单地调用MyCustomClass.load(swf here),它应该执行您需要的操作。
我希望有帮助!