当您将SWF加载到另一个SWF中时,加载器SWF可以使用ApplicationDomain.getDefinition(name:String)从加载的SWF获取特定定义.例如:
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中获取所有定义,而不明确指定?
解决方法
从Flash Player 11.3开始,您可以使用ApplicationDomain.getQualifiedDefinitionNames().
见the official documentation for the method和this blog post about the Flash Player release.