Carga de un archivo SWF externo

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

En ActionScript 3.0, los archivos SWF se cargan mediante la clase Loader. Para cargar un archivo SWF externo, el código ActionScript debe hacer cuatro cosas:

  1. Crear un nuevo objeto URLRequest con el URL del archivo.

  2. Crear un nuevo objeto Loader.

  3. Llamar al método load() del objeto Loader pasando la instancia de URLRequest como parámetro.

  4. Llamar al método addChild() en un contendor de objeto de visualización (como la línea de tiempo principal de un documento de Flash) para añadir la instancia de Loader a la lista de visualización.

Una vez finalizado, el código tiene el siguiente aspecto:

var request:URLRequest = new URLRequest("http://www.[yourdomain].com/externalSwf.swf"); 
var loader:Loader = new Loader() 
loader.load(request); 
addChild(loader);

Este mismo código se puede utilizar para cargar un archivo de imagen externo como una imagen JPEG, GIF o PNG especificando el URL del archivo de imagen en lugar del URL del archivo SWF. Un archivo SWF, a diferencia de un archivo de imagen, puede contener código ActionScript. Por lo tanto, aunque el proceso de carga de un archivo SWF puede ser idéntico a la carga de una imagen, al cargar un archivo SWF externo, tanto el SWF que realiza la carga como el SWF cargado deben residir en el mismo entorno limitado de seguridad si Flash Player o AIR van a reproducir el archivo SWF y ActionScript se va a emplear para comunicarse de cualquier forma con el archivo SWF externo. Además, si el archivo SWF externo contiene clases que comparten el mismo espacio de nombres que las clases del archivo SWF que realiza la carga, es posible que sea necesario crear un nuevo dominio de aplicación para el archivo SWF cargado a fin de evitar conflictos de espacio de nombres. Para obtener más información sobre las consideraciones de seguridad y de dominio de aplicación, consulte Trabajo con dominios de aplicación y Carga de contenido .

Cuando el archivo SWF externo se carga correctamente, se puede acceder a él a través de la propiedad Loader.content. Si el archivo SWF externo se publica para ActionScript 3.0, será un objeto MovieClip o Sprite, en función de la clase que amplíe.

La carga de archivos SWF en Adobe AIR para iOS es algo diferente del procedimiento utilizado en otras plataformas. Para obtener más información, consulte Carga de archivos SWF en AIR para iOS .

Consideraciones sobre la carga de un archivo SWF antiguo

Si el archivo SWF externo se ha publicado con una versión anterior de ActionScript, hay que tener en cuenta algunas limitaciones importantes. A diferencia de un archivo SWF de ActionScript 3.0 que se ejecuta en AVM2 (máquina virtual ActionScript 2), un archivo SWF publicado para ActionScript 1.0 o 2.0 se ejecuta en AVM1 (máquina virtual ActionScript 1).

Existen diferencias importantes al cargar un archivo SWF 1.0 o de ActionScript 2.0 en un archivo SWF de ActionScript 3.0 (en comparación con cargar un archivo SWF de ActionScript 3.0). Como siempre, Flash Player proporciona compatibilidad completa con el contenido publicado previamente con versiones anteriores. Cualquier contenido que se ejecute en versiones anteriores de Flash Player se ejecuta en versiones de Flash Player que admiten ActionScript 3.0. Sin embargo, se aplican las siguientes limitaciones:

  • El código ActionScript 3.0 puede cargar un archivo SWF escrito en ActionScript 1.0 o 2.0. Si un archivo SWF de ActionScript 1.0 o 2.0 se carga correctamente, el objeto cargado (propiedad Loader.content ) es un objeto AVM1Movie. Una instancia de AVM1Movie no es lo mismo que una instancia de MovieClip. Es un objeto de visualización que, a diferencia de un clip de película, no incluye propiedades ni métodos relacionados con la línea de tiempo. El archivo SWF AVM2 principal no tendrá acceso a las propiedades, métodos ni objetos del objeto AVM1Movie cargado.

  • Los archivos SWF escritos en ActionScript 1.0 o 2.0 no pueden cargar archivos SWF escritos en ActionScript 3.0. Esto significa que los archivos SWF creados en Flash 8 o Flex Builder 1.5 o versiones anteriores no pueden cargar archivos SWF de ActionScript 3.0.

    La única excepción a esta regla es que un archivo SWF de ActionScript 2.0 puede sustituirse a sí mismo por un archivo SWF de ActionScript 3.0, siempre y cuando el archivo SWF de ActionScript 2.0 no haya cargado ningún elemento en ninguno de sus niveles. Para ello, el archivo SWF de ActionScript 2.0 debe realizar una llamada a loadMovieNum() , pasando un valor 0 al parámetro level .

  • En general, los archivos SWF escritos en ActionScript 1.0 o 2.0 se deben migrar si van a funcionar de forma conjunta con los archivos SWF escritos en ActionScript 3.0. Por ejemplo, supongamos que se ha creado un reproductor de medios utilizando ActionScript 2.0. El reproductor carga distinto contenido que también se creó utilizando ActionScript 2.0. No es posible crear nuevo contenido en ActionScript 3.0 y cargarlo en el reproductor de medios. Es necesario migrar el reproductor de vídeo a ActionScript 3.0.

    No obstante, si se crea un reproductor de medios en ActionScript 3.0, dicho reproductor puede realizar cargas sencillas del contenido de ActionScript 2.0.

En la siguiente tabla se resumen las limitaciones de las versiones anteriores de Flash Player en lo referente a la carga de nuevo contenido y a la ejecución de código, así como las limitaciones relativas a la reutilización de scripts entre archivos SWF escritos en distintas versiones de ActionScript.

Funcionalidad admitida

Flash Player 7

Flash Player 8

Flash Player 9 y 10

Puede cargar archivos SWF publicados para

7 y versiones anteriores

8 y versiones anteriores

9 (o 10) y versiones anteriores

Contiene esta AVM

AVM1

AVM1

AVM1 y AVM2

Ejecuta archivos SWF escritos en ActionScript

1.0 y 2.0

1.0 y 2.0

1.0, 2.0 y 3.0

En la siguiente tabla, “Funcionalidad admitida” hace referencia al contenido que se ejecuta en Flash Player 9 o posterior. El contenido ejecutado en Flash Player 8 o versiones anteriores puede cargar, mostrar, ejecutar y reutilizar scripts únicamente de ActionScript 1.0 y 2.0.

Funcionalidad admitida

Contenido creado en ActionScript 1.0 y 2.0

Contenido creado en ActionScript 3.0

Puede cargar contenido y ejecutar código en contenido creado en

Solo ActionScript 1.0 y 2.0

ActionScript 1.0 y 2.0, y ActionScript 3.0

Puede reutilizar contenido de scripts creado en

Solo ActionScript 1.0 y 2.0 (ActionScript 3.0 a través de conexión local)

ActionScript 1.0 y 2.0 a través de LocalConnection.

ActionScript 3.0