HTML 페이지 내에서 ActionScript 라이브러리 사용

Adobe AIR 1.0 이상

AIR은 페이지가 컴파일된 SWF 파일에서 ActionScript 클래스를 가져올 수 있도록 HTML 스크립트 요소를 확장합니다. 예를 들어 루트 응용 프로그램 폴더의 lib 하위 디렉토리에 있는 myClasses.swf라는 라이브러리를 가져오려면 HTML 파일 내에 다음과 같은 script 태그를 포함합니다.

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
중요: 라이브러리를 올바르게 로드하기 위해 유형 특성이 type="application/x-shockwave-flash"이어야 합니다.

SWF 내용이 Flash Player 10 또는 AIR 1.5 SWF로 컴파일되는 경우 응용 프로그램 설명자 파일의 XML 네임스페이스를 AIR 1.5 네임스페이스로 설정해야 합니다.

AIR 파일을 패키지할 때 lib 디렉토리 및 myClasses.swf 파일도 포함되어야 합니다.

가져온 클래스를 JavaScript Window 객체의 runtime 속성을 통해 액세스합니다.

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

SWF 파일의 클래스가 패키지로 구성되어 있으면 패키지 이름도 포함해야 합니다. 예를 들어 LibraryClass 정의가 utilities라는 패키지에 포함되어 있으면 다음 명령문을 사용하여 클래스 인스턴스를 만듭니다.

var libraryObject = new window.runtime.utilities.LibraryClass();
참고: AIR의 HTML 페이지 일부로 사용할 ActionScript SWF 라이브러리를 컴파일하려면 acompc 컴파일러를 사용합니다. acompc 유틸리티는 Flex SDK의 일부이며 Flex SDK 설명서에 나와 있습니다.

가져온 ActionScript 파일에서 HTML DOM 및 JavaScript 객체에 액세스

<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;