<script>
태그를 사용하여 페이지로 가져온 SWF 파일의 ActionScript에서 HTML 페이지의 객체에 액세스하려면
window
또는
document
와 같은 JavaScript 객체에 대한 참조를 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 페이지는
num
이라고 하는 JavaScript 변수와
getStatus()
라고 하는 JavaScript 함수를 포함합니다. 이 두 항목 모두 페이지
window
객체의 속성입니다. 또한
window.document
객체에는 ID
p1
의 이름이 지정된 P 요소가 포함됩니다.
페이지는 ASClass 클래스를 포함하는 “ASLibrary.swf”라는 ActionScript 파일을 로드합니다. ASClass는 이러한 JavaScript 객체의 값을 추적하기만 하는
accessDOM()
이라는 함수를 정의합니다.
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.
}
}
가져온 ActionScript 클래스에서 HTML 페이지의 속성을 가져오고 설정할 수 있습니다. 예를 들어 다음 함수는 페이지에서
p1
요소의 내용을 설정하고 페이지에서
foo
JavaScript 변수의 값을 설정합니다.
public function modifyDOM(window:*):void {
window.document.getElementById("p1").innerHTML = "Bye";
window.foo = 66;