Uso de las bibliotecas de ActionScript en una página HTML

Adobe AIR 1.0 y posterior

AIR amplía el elemento de script HTML para que una página pueda importar clases ActionScript en un archivo SWF compilado. Por ejemplo, para importar una biblioteca llamada myClasses.swf , ubicada en el subdirectorio lib de la carpeta de aplicaciones raíz, se debe incluir la siguiente etiqueta de script dentro de un archivo HTML:

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
Importante: el atributo type debe ser type="application/x-shockwave-flash" para que la biblioteca se cargue correctamente.

Si el contenido SWF se compila como un archivo SWF de Flash Player 10 o AIR 1.5, debe establecer el espacio de nombres XML del archivo descriptor de la aplicación en el espacio de nombres de AIR 1.5.

El directorio lib y el archivo myClasses.swf también se deben incluir cuando se empaqueta el archivo de AIR.

Acceda a las clases importadas a través de la propiedad runtime del objeto Window de JavaScript:

var libraryObject = new window.runtime.LibraryClass();

Si las clases en el archivo SWF se organizan en paquetes, debe también incluir el nombre del paquete. Por ejemplo, si la definición LibraryClass está en un paquete denominado utilities , creará una instancia de la clase con la siguiente sentencia:

var libraryObject = new window.runtime.utilities.LibraryClass();
Nota: para compilar una biblioteca SWF ActionScript para usar como parte de una página HTML en AIR, utilice el compilador acompc . La utilidad acompc forma parte de Flex SDK y se describe en la documentación de Flex SDK.

Acceso a objetos JavaScript y DOM HTML desde un archivo importado ActionScript

Para acceder a objetos en una página HTML desde ActionScript en un archivo SWF importado en la página utilizando la etiqueta <script> , pase una referencia a un objeto JavaScript, como window o document , a una función definida en el código ActionScript. Utilice la referencia dentro de la función para acceder al objeto JavaScript (u otros objetos accesibles a través de la referencia pasada).

Por ejemplo, considere la siguiente página HTML:

<html> 
    <script src="ASLibrary.swf" type="application/x-shockwave-flash"></script> 
    <script> 
        num = 254; 
        function getStatus() { 
            return "OK."; 
        } 
        function runASFunction(window){ 
            var obj = new runtime.ASClass(); 
            obj.accessDOM(window); 
        } 
    </script> 
    <body onload="runASFunction"> 
        <p id="p1">Body text.</p> 
    </body> 
</html>

Esta simple página HTML tiene una variable JavaScript denominada num y una función JavaScript denominada getStatus() . Ambas son propiedades del objeto window de la página. Asimismo, el objeto window.document incluye un elemento P (con el ID p1 ).

La página carga un archivo ActionScript, “ASLibrary.swf,” que contiene una clase, ASClass. ASClass define una función denominada accessDOM() que simplemente rastrea los valores de estos objetos JavaScript. El método accessDOM() toma al objeto Window de JavaScript como un argumento. Utilizando esta referencia Window, se puede acceder a otros objetos en la página incluyendo variables, funciones y elementos DOM como se muestra en la siguiente definición:

public class ASClass{ 
    public function accessDOM(window:*):void { 
        trace(window.num); // 254 
        trace(window.document.getElementById("p1").innerHTML); // Body text.. 
        trace(window.getStatus()); // OK. 
    } 
}

Se pueden obtener y definir las propiedades de la página HTML de una clase ActionScript importada. Por ejemplo, la siguiente función define el contenido del elemento p1 en la página y define el valor de la variable foo de JavaScript en la página:

public function modifyDOM(window:*):void { 
    window.document.getElementById("p1").innerHTML = "Bye"; 
    window.foo = 66;