[英]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.