Utilisation des bibliothèques ActionScript au sein d’une page HTML

Adobe AIR 1.0 et les versions ultérieures

AIR étend l’élément de script HTML de telle sorte qu’une page peut importer des classes ActionScript dans un fichier SWF compilé. Par exemple, pour importer une bibliothèque appelée myClasses.swf qui se trouve dans le sous-répertoire lib du dossier racine de l’application, insérez la balise de script suivante au sein d’un fichier HTML :

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
Important : l’attribut type doit être type="application/x-shockwave-flash" pour que la bibliothèque soit chargée convenablement.

Si le contenu SWF est compilé sous forme de fichier SWF Flash Player 10 ou AIR 1.5, vous devez définir l’espace de noms XML du fichier descripteur d’application sur l’espace de noms AIR 1.5.

Le répertoire lib et le fichier myClasses.swf doivent aussi être inclus lorsque le fichier AIR est mis en package.

Accédez aux classes importées par la propriété runtime de l’objet Window de JavaScript :

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

Si les classes du fichier SWF sont organisées en packages, vous devez également inclure le nom du package. Par exemple, si la définition LibraryClass se trouvait dans un package appelé utilities , vous créeriez une occurrence de la classe à l’aide de l’instruction suivante :

var libraryObject = new window.runtime.utilities.LibraryClass();
Remarque : pour compiler une bibliothèque de SWF dans ActionScript afin qu’elle fasse partie d’une page HTML dans AIR, utilisez le compilateur acompc . L’utilitaire acompc fait partie du SDK de Flex. Il est décrit dans la documentation SDK de Flex.

Accès au DOM HTML et aux objets JavaScript à partir d’un fichier ActionScript importé

Pour accéder à des objets dans une page HTML à partir d’ActionScript dans un fichier SWF importé dans la page à l’aide de la balise <script> , transmettez une référence à l’objet JavaScript, telle que window ou document , à une fonction définie dans le code ActionScript. Utilisez la référence au sein de la fonction pour accéder à l’objet ou à d’autres objets accessibles grâce à la référence qu’on a fait passer.

Par exemple, examinez la page HTML suivante :

<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>

La page HTML simple contient une variable JavaScript appelée num et une fonction JavaScript appelée getStatus() . Ces deux éléments sont des propriétés de l’objet window de la page. En outre, l’objet window.document contient un élément p désigné et dont l’ID est p1 .

La page charge un fichier ActionScript, « ASLibrary.swf », qui contient une classe, ASClass. ASClass définit une fonction appelée accessDOM() qui enregistre simplement les valeurs de ces objets JavaScript. La méthode accessDOM() prend l’objet Window de JavaScript comme argument. A l’aide de cette référence Window, elle peut accéder à d’autres objets de la page tels que les variables, les fonctions et les éléments DOM, comme l’illustre la définition ci-dessous :

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

Vous pouvez à la fois lire et définir des propriétés de la page HTML à partir d’une classe ActionScript importée. Par exemple, la fonction suivante définit sur la page le contenu de l’élément pl et la valeur de la variable JavaScript foo :

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