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;