OpenLaszloはAIR で実行できるようです。あまり明確でないのは、OpenLaszlo アプリがファイル システム アクセスなどの AIR 固有の API を使用できるかどうかです。もしそうなら、これはどのように正確に行われますか?
2 に答える
詳細はわかりませんが、リンクした記事には、彼のアプリケーション ウィンドウをドラッグして閉じることができると記載されています。これらは AIR のみの API (NativeWindow クラスを参照) であるため、おそらく、あなたが求めていることはある程度可能でなければなりません。
しかし、私の理解では、OpenLaszlo は Flash で実行できることを (たとえば) DHTML で実行しないように実装しようとしているため、ローカル ファイル アクセスなどを実行する方法があまり明確ではない可能性があります。おそらく、この記事にリンクされているソースをダウンロードして、彼がウィンドウのドラッグ/クローズをどのように実装したかを確認したいと思うでしょう。
OpenLaszloは、特定のランタイムでのみ利用可能な機能を実装しています。これは、MP3オーディオ再生、Flash Player Webカメラとマイクアクセス、RTMPストリーミングにも当てはまります。OpenLaszloコンパイラは、ActionScriptコードをスクリプトとメソッドに直接挿入することをサポートしています。
これは、Event.DEACTIVATEイベントとEvent.ACTIVATEイベントをキャッチし、赤いビューをクリック/タッチしてアプリケーションを終了できるアプリケーションの例です。
ActionScript 3 APIは、<passthrough>タグを使用してインポートできます。これは、キャンバス、クラス定義、またはコード内の任意のタグインスタンス内で使用できます。
<canvas bgcolor="#ffffff" debug="false" height="100%" width="100%">
<passthrough when="$as3">
import flash.events.Event;
import flash.desktop.NativeApplication;
</passthrough>
<handler name="oninit">
NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, __onDeactivate);
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, __onActivate);
</handler>
<method name="__onActivate" args="ev">
Debug.info("onActivate");
Debug.info("frame rate is " + this.getDisplayObject().stage.frameRate)
</method>
<method name="__onDeactivate" args="ev">
Debug.info("onDeactivate");
Debug.info("frame rate is " + this.getDisplayObject().stage.frameRate)
</method>
<view width="80%" height="50%" bgcolor="red" clickable="true">
<passthrough>
import flash.desktop.NativeApplication;
</passthrough>
<handler name="onclick">
NativeApplication.nativeApplication.exit();
</handler>
</view>
</canvas>
SWFxランタイムでのみコードを実行する場合は、そのコードをブロックに配置して、$as3プロパティをチェックできます。
if ($as3) {
// Insert some code for the SWFx runtime or AIR applications only
}
このアプローチを使用すると、LZXコードをDHTML、SWFx、またはAIRアプリケーションのいずれかに簡単に再利用できます。