AIR のネイティブウィンドウの基礎Adobe AIR 1.0 およびそれ以降 AIR でのネイティブウィンドウの操作に関する簡単な説明およびコード例については、Adobe Developer Connection で次のクイックスタート記事を参照してください。
AIR には、Flash®、Flex™ および HTML のプログラミング技法を使用してオペレーティングシステムのネイティブウィンドウを作成するための、簡単に使用できるクロスプラットフォームのウィンドウ API が用意されています。 AIR では、アプリケーションの外観を柔軟に開発できます。ユーザーが作成するウィンドウは、標準のデスクトップアプリケーションのようになります。Macintosh で実行する場合は Apple スタイルに一致し、Windows で実行する場合は Microsoft の規則に準拠し、Linux で実行する場合はウィンドウマネージャーに適合します。いずれの場合も、プラットフォーム固有のコード行を含める必要はありません。または、Flex フレームワークで提供されているスキンとして使用できて拡張性のあるクロムを使用して、アプリケーションの実行環境に左右されない独自のスタイルを作成することもできます。 さらには、デスクトップに対する透明度とアルファブレンドを完全にサポートするベクトルとビットマップのアートワークを使用して、独自のウィンドウクロムを描画することもできます。矩形のウィンドウに飽きているなら、丸いウィンドウを作成してみてください。 AIR のウィンドウAIR では、ウィンドウを操作するための 3 つの API がサポートされています。
ActionScript ウィンドウNativeWindow クラスでウィンドウを作成するときは、Flash Player のステージと表示リストを直接使用します。NativeWindow に表示オブジェクトを追加するには、ウィンドウステージの表示リストまたはステージの別の表示オブジェクトコンテナにオブジェクトを追加します。 HTML ウィンドウHTML ウィンドウを作成するときは、HTML、CSS および JavaScript を使用してコンテンツを表示します。表示オブジェクトを HTML ウィンドウに追加するには、そのコンテンツを HTML DOM に追加します。HTML ウィンドウは、NativeWindow の特殊なカテゴリです。AIR ホストでは、基になる NativeWindow インスタンスへのアクセスを提供する nativeWindow プロパティが、HTML ウィンドウで定義されています。このプロパティを使用して、ここで説明する NativeWindow のプロパティ、メソッドおよびイベントにアクセスできます。 注意: また、JavaScript の Window オブジェクトには、moveTo() や close() など、コンテナウィンドウのスクリプトを作成するためのメソッドもあります。オーバーラップするメソッドを使用できる場合は、どれでも便利なメソッドを使用してかまいません。
Flex フレームワークウィンドウFlex フレームワークでウィンドウを作成するときは、通常、MXML コンポーネントを使用してウィンドウを設定します。Flex コンポーネントをウィンドウに追加するには、コンポーネントエレメントをウィンドウの MXML 定義に追加します。また、ActionScript を使用してコンテンツを動的に追加することもできます。mx:WindowedApplication コンポーネントと mx:Window コンポーネントは Flex コンテナとして作られているので、Flex コンポーネントを動的に受け入れることができますが、NativeWindow オブジェクトはできません。必要な場合は、nativeWindow プロパティを使用して WindowedApplication オブジェクトおよび Window オブジェクトを通して、NativeWindow のプロパティとメソッドにアクセスできます。 ネイティブウィンドウのイベントフローネイティブウィンドウは、イベントを送出して、重要な変更が発生しようとしていること、または既に発生したことを、関係するコンポーネントに通知します。多くのウィンドウ関連イベントは、ペアで送出されます。最初のイベントは、変更が発生しようとしていることを警告します。2 番目のイベントは、変更が行われたことを通知します。警告イベントはキャンセルできますが、通知イベントはキャンセルできません。次のシーケンスは、ユーザーがウィンドウの最大化ボタンをクリックすると発生するイベントのフローを示したものです。
ネイティブウィンドウのスタイルと動作を制御するプロパティウィンドウの基本的な外観と動作は、次のプロパティが制御します。
ウィンドウを作成するときは、ウィンドウコンストラクターに渡す NativeWindowInitOptions オブジェクトで、これらのプロパティを設定します。AIR は、初期アプリケーションウィンドウのプロパティを、アプリケーション記述子から読み取ります(ただし、type プロパティはアプリケーション記述子では設定できず、常に normal に設定されます)。ウィンドウの作成後に、プロパティを変更することはできません。 これらのプロパティの設定の中には、同時に指定できないものがあります。例えば、transparent が true のとき、または type が lightweight のときには、systemChrome を standard に設定することはできません。 ウィンドウタイプAIR のウィンドウタイプでは、ネイティブオペレーティングシステムの chrome 属性と visibility 属性を結合して、ウィンドウの 3 つの機能タイプを作成します。コードでタイプ名を参照するには、NativeWindowType クラスで定義されている定数を使用します。AIR には次のウィンドウタイプがあります。
ウィンドウクロムウィンドウクロムは、ユーザーがデスクトップ環境内のウィンドウを操作できるようにする一連のコントロールです。クロムエレメントには、タイトルバー、タイトルバーボタン、ボーダー、サイズ変更グリップなどがあります。 システムクロムsystemChrome プロパティには、standard または none を設定できます。ユーザーのオペレーティングシステムによって作成およびスタイル設定される標準コントロールのセットをウィンドウで使用するには、standard システムクロムを選択します。ウィンドウに独自のクロムを使用するには、none を選択します。コードでシステムクロムの設定を参照するには、NativeWindowSystemChrome クラスで定義されている定数を使用します。 システムクロムは、システムによって管理されます。アプリケーションでは、コントロール自体に直接アクセスすることはできませんが、コントロールが使用されるときに送出されるイベントには対応できます。ウィンドウに標準のクロムを使用する場合は、transparent プロパティを false に設定し、type プロパティを normal または utility に設定する必要があります。 Flex クロムFlex の WindowedApplication コンポーネントまたは Window コンポーネントを使用する場合は、システムクロムまたは Flex フレームワークで提供されるクロムをウィンドウで使用できます。Flex クロムを使用するには、ウィンドウの作成に使用する systemChrome プロパティを none に設定します。mx コンポーネントではなく Flex 4 spark コンポーネントを使用する場合は、Flex クロムを使用するためにスキンクラスを指定する必要があります。ビルトインスキンを使用するか、または独自のスキンを指定できます。次の例では、ビルトインの spark の WindowedApplication スキンクラスを使用してウィンドウクロムを提供する方法を示します。 <?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Style> @namespace "library://ns.adobe.com/flex/spark"; WindowedApplication { skinClass:ClassReference("spark.skins.spark.SparkChromeWindowedApplicationSkin"); } </fx:Style> </s:WindowedApplication> 詳しくは、『Using Flex 4』の「About the AIR window containers」の「Controlling window chrome」を参照してください。 ウィンドウの透明度ウィンドウとデスクトップまたは他のウィンドウとのアルファブレンドを可能にするには、transparent プロパティを true に設定します。transparent プロパティは、ウィンドウを作成する前に設定する必要があり、変更することはできません。 透明なウィンドウには、デフォルトの背景はありません。アプリケーションによって描画されたオブジェクトを含まないウィンドウ領域は表示されません。表示されたオブジェクトのアルファ設定が 1 未満の場合は、同じウィンドウ内の他の表示オブジェクト、他のウィンドウ、デスクトップなど、オブジェクトの下にあるすべてのものが透けて見えます。 ボーダーが不規則な形のウィンドウ、または「フェードアウト」するウィンドウや不可視のウィンドウを作成するには、透明なウィンドウが便利です。ただし、大きいアルファブレンド領域のレンダリングには時間がかかる場合があるので、この効果は控えめに使用する必要があります。 重要: Linux の場合、マウスイベントは完全に透明なピクセルを通過できません。完全に透明で面積が広いウィンドウを作成すると、見えないウィンドウによってユーザーの操作がブロックされ、デスクトップ上にある他のウィンドウやアイテムがアクセス不能になるため、望ましくありません。Mac OS X および Windows の場合、マウスイベントは完全に透明なピクセルを通過します。
透明度は、システムクロムを使用するウィンドウでは使用できません。さらに、HTML 内の SWF コンテンツと PDF コンテンツは、透明ウィンドウに表示されない場合があります。詳しくは、HTML ページに SWF コンテンツまたは PDF コンテンツを読み込む場合の考慮事項を参照してください。 ウィンドウの透明度が使用可能かどうかは、静的な NativeWindow.supportsTransparency プロパティによって報告されます。透明度がサポートされていない場合、アプリケーションの背景は黒になります。この場合、アプリケーションの透明領域は不透明の黒として表示されます。このプロパティがテストで false になった場合のために、フォールバックを用意することをお勧めします。例えば、警告ダイアログをユーザーに表示するか、矩形の不透明なユーザーインターフェイスを表示することができます。 Windows および Macintosh オペレーティングシステムでは、常に透明度がサポートされます。Linux オペレーティングシステムでのサポートには、合成ウィンドウマネージャーが必要ですが、合成ウィンドウマネージャーがアクティブな場合でも、ユーザーの表示オプションまたはハードウェア構成により、透明度は使用できません。 MXML アプリケーションウィンドウでの透明度デフォルトでは、MXML ウィンドウの背景は、transparent としてウィンドウを作成した場合でも不透明です(透明効果はウィンドウの角でわかります)。ウィンドウの背景を透明にするには、スタイルシートまたはアプリケーションの MXML ファイルに含まれる <mx:Style> エレメントで、背景の色とアルファ値を設定します。例えば、次のスタイル宣言を使用すると、背景は少しだけ透明な緑色のシェードになります。 WindowedApplication { background-alpha:".8"; background-color:"0x448234"; } HTML アプリケーションウィンドウでの透明度デフォルトでは、HTML ウィンドウおよび HTMLLoader オブジェクトに表示される HTML コンテンツの背景は、コンテナウィンドウが透明であっても不透明です。HTML コンテンツに表示されるデフォルトの背景をオフにするには、paintsDefaultBackground プロパティを false に設定します。次の例では、HTMLLoader を作成し、デフォルトの背景をオフにしています。 var htmlView:HTMLLoader = new HTMLLoader(); htmlView.paintsDefaultBackground = false; この例では、JavaScript を使用して HTML ウィンドウのデフォルトの背景をオフにしています。 window.htmlLoader.paintsDefaultBackground = false; HTML ドキュメント内のエレメントに背景色を設定すると、そのエレメントの背景は透明ではなくなります。透明度(または不透明度)の値の部分的な設定は、サポートされていません。ただし、透明な PNG 形式のグラフィックをページまたはページエレメントの背景として使用することで、同じような視覚効果を得ることができます。 ウィンドウの所有権1 つのウィンドウは、1 つ以上の他のウィンドウを所有できます。所有されているウィンドウは、常にマスターウィンドウの前面に表示され、マスターウィンドウと共に最小化と復元が実行され、マスターウィンドウが閉じられると一緒に閉じられます。ウィンドウの所有権を他のウィンドウに転送したり、削除したりすることはできません。複数のウィンドウが同じ 1 つのウィンドウを所有することはできませんが、1 つのウィンドウが複数のウィンドウを所有することはできます。 ウィンドウの所有機能を使用することで、ツールパレットやダイアログに使用されるウィンドウの管理が簡単になります。例えば、ドキュメントウィンドウに関連する保存ダイアログを表示する場合、ドキュメントウィンドウを保存ダイアログの所有者として設定しておくことによって、自動的にドキュメントウィンドウの前面にダイアログを表示し続けることができます。 表示ウィンドウカタログ次の表に、異なるウィンドウプロパティ設定の組み合わせが Mac OS X、Windows および Linux オペレーティングシステムでどのような視覚効果になるかを示します。
*Ubuntu と Compiz ウィンドウマネージャー 注意: Mac OS X ツールバー、Mac OS X プロキシアイコン、Windows タイトルバーアイコン、代替システムクロムの各システムクロムエレメントは、AIR ではサポートされていません。
|
![]() |