Cuando carga un SWF en otro, el SWF del cargador puede obtener definiciones específicas del archivo SWF cargado utilizando ApplicationDomain.getDefinition(name:String)
. Por ejemplo:¿Cómo obtener todas las definiciones en un ApplicationDomain de un SWF cargado?
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);
}
}
}
¿Cómo puedo obtener todas las definiciones en un archivo SWF, sin especificar cada una explícitamente?
Hermoso. Finalmente, Adobe agregó esta funcionalidad :) –
A partir del 3/31/2014, el método no está documentado. No se menciona 'getQualifiedDefinitionNames' en el enlace de documentación para ApplicationDomain. Sin embargo, el método funciona y devuelve un 'Vector. 'de las clases definidas en ese ApplicationDomain particular. También tenga en cuenta que no devuelve definiciones de dominios principales, aunque getDefinition/hasDefinition devolverá true para las clases definidas en los dominios principales. –
Triynko
Está documentado allí, pero necesita configurar la versión del reproductor a 11.3 o superior para poder verla. En la parte superior, debajo del título de la página. –