[英]AS3, loading in a SWF as a custom type
这里的基本问题。 通常在AS3中,您通过Loader加载SWF,而您获得的是某种类型为“Loader”的伪MovieClip。
假设SWF是使用自定义类型的基类发布的,那么在阳光下是否有任何神圣的方式将此加载的SWF强制转换为扩展MovieClip而不是Loader的自定义类型? 没有数据丢失?
或者,假设你不能,你甚至可以从扩展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);
}
}
}
我正在使用一个界面,但它并不是严格必要的。
package {
public interface IStub {
function traceIt(value:String):void;
}
}
代码在“主要”瑞士法郎。
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");
}
是的,loader.content让您可以访问所加载的内容。 你应该能够简单地把它变成你想要的。
或者,您可以选择扩展Loader,它已经扩展了DisplayObjectContainer,因此您可以开始使用MovieClip的大部分功能。 在这种情况下,写它,这样你就可以简单地调用MyCustomClass.load(swf here),它应该做你需要它。
我希望有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.