Для доступа к объектам на 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;