HTML ページ内での ActionScript ライブラリの使用

Adobe AIR 1.0 およびそれ以降

AIR では、コンパイルされた SWF ファイルの ActionScript クラスをページがインポートできるように HTML の script エレメントを拡張します。例えば、ルートアプリケーションフォルダーの lib サブディレクトリにある myClasses.swf という名前のライブラリを読み込むには、HTML ファイル内に次の script タグを記述します。

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
重要: ライブラリが適切に読み込まれるには、type 属性を 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 関数があります。2 つともページの window オブジェクトのプロパティです。また、 window.document オブジェクトには名前付きの P エレメント(ID は p1 )があります。

ページは、ASClass というクラスを含む ActionScript ファイル「ASLibrary.swf」を読み込みます。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;