當您將SWF加載到另一個SWF中時,加載器SWF可以使用ApplicationDomain.getDefinition(name:String)
從加載的SWF中獲取特定的定義。例如:如何獲得加載的SWF的ApplicationDomain中的所有定義?
package
{
// ... imports
public class SWFLoader extends Sprite
{
private var loadedAppDomain:ApplicationDomain;
public function SWFLoader()
{
var request:URLRequest = new URLRequest("test.swf");
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onTestLoadComplete);
loader.load(request);
}
private function onTestLoadComplete(event:Event):void
{
var loaderInfo:LoaderInfo = LoaderInfo(event.target);
loadedAppDomain = loaderInfo.applicationDomain;
// Here we can get ANY defined symbol (class, namespace or function according to Adobe Flash help)
var someSymbolClass:Class = Class(loadedAppDomain.getDefinition("SomeSymbol"));
var someSymbolSprite:Sprite = Sprite(new someSymbolClass());
addChild(sprite);
}
}
}
如何獲取SWF中的所有定義,而不明確指定每個定義?
美麗。最後,Adobe添加了此功能:) – 2012-10-24 13:48:20
截至2014年3月31日,該方法沒有實際記錄。 ApplicationDomain的文檔鏈接中沒有提及'getQualifiedDefinitionNames'。然而,該方法有效,並且它返回一個「Vector」。'在該特定的ApplicationDomain中定義的類。另請注意,即使getDefinition/hasDefinition將爲父域中定義的類返回true,它也不會返回父域的定義。 –
Triynko
2014-03-31 19:06:08
它被記錄在那裏,但您需要將播放器版本設置爲11.3或更高才能看到它。在頁面標題下方的頂部。 – 2014-05-15 05:12:55