Использование библиотек 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;