Использование библиотек ActionScript на HTML-странице

Adobe AIR 1.0 и более поздних версий

AIR расширяет элемент HTML-сценария, и страница может загружать классы ActionScript в скомпилированный SWF-файл. Например, для импорта библиотеки myClasses.swf , расположенной в подкаталоге lib в корневом каталоге приложения, включите в HTML-файл следующий код:

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
Важная информация. Чтобы библиотека загрузилась нормально, значение атрибута должно быть type="application/x-shockwave-flash" .

Если SWF-содержимое компилируется как SWF-файл для проигрывателя Adobe Flash 10 или AIR 1.5, необходимо установить в качестве пространства имен XML в файле дескриптора приложения пространство имен AIR 1.5.

Каталог lib и файл myClasses.swf также должны быть включены в пакет с файлом AIR.

Импортированные классы могут быть доступны через свойство runtime объекта Window в JavaScript:

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

Если классы SWF-файла организованы в виде пакетов, необходимо также включать имя пакета. Например, если определение LibraryClass содержится в пакете utilities , экземпляр класса создается с помощью следующей инструкции:

var libraryObject = new window.runtime.utilities.LibraryClass();
Примечание. Для компиляции SWF-библиотеки ActionScript и использования ее на HTML-странице в AIR пользуйтесь компилятором acompc . Утилита acompc входит в пакет Flex SDK и описана в документации по Flex SDK.

Доступ к объектам DOM и JavaScript в HTML из импортированного файла ActionScript

Для доступа к объектам на HTML-странице из ActionScript в SWF-файле, импортированном в страницу с помощью тега <script> , передайте ссылку на объект JavaScript, например window или document , функции, определенной в коде ActionScript. С помощью ссылки, включенной в функцию, можно обратиться к объекту JavaScript (или другим объектам, доступным по передаваемой ссылке).

Например, рассмотрим следующую 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>

На этой простой HTML-странице определяется переменная JavaScript num и функция JavaScript getStatus() . Обе они являются свойствами объекта window страницы. Кроме того, объект window.document включает названный элемент P (с ID p1 ).

Страница загружает файл ActionScript ASLibrary.swf, содержащий класс ASClass. ASClass определяет функцию с именем accessDOM() , которая просто отслеживает значения этих объектов JavaScript. Метод accessDOM() принимает в качестве аргумента объект JavaScript Window. С помощью ссылки Window он получает доступ к другим объектам на странице, включая переменные, функции и элементы DOM, как показано в определении ниже:

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

И получать, и задавать свойства HTML-страницы можно из импортированного класса ActionScript. Например, следующая функция задает содержимое элемента p1 и значение переменной JavaScript foo на странице:

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