2008年7月27日日曜日

AirのWindowの関連について

Airの画面オブジェクトの構成がイマイチよくわかっていません。
WindowedApplication,Applicationは、Airのメイン画面のクラスのことね...と思っていたぐらいの所に、StageだのNativeWindowだの出てきて、混乱気味。

...という事で、関連しそうな所をクラス図にしてみました。



NativeApplicationというクラスは、自分自身のインスタンスをstaticに取れるようなので、これがAirアプリのルートと想像。

その中に、NativeWindowが複数格納されているようです。

このNativeWindowにはStageというクラスがあって、これがいろんな表示オブジェクトを保持しているみたい。

ブラウザ (Flash® Player) で実行されている SWF コンテンツの場合、Stage は Flash コンテンツが表示されている全体の領域を表します。AIR で実行されているコンテンツの場合、各 NativeWindow オブジェクトが、対応する Stage オブジェクトを持ちます。

...とのことなので、Flashの時はこのStageがRootの表示領域だったけど、AirはNativeWindowが保持している...つまり、NativeWindowが複数あれば、Stageも複数存在するってことですかね。

WindowedApplicationやApplicationは何処に入っているんだろ?とみていたのですが、クラスの関連からは見えなくて。。

NativeWindowの説明で
Flex コンポーネントを、NativeWindow インスタンスの表示リストに直接追加することはできません。この場合、Flex mx:WindowedApplication コンポーネントおよび mx:Window コンポーネントを使用してウィンドウを作成し、これらのオブジェクトに他の Flex コンポーネントを子として追加します。Flex ベースの SWF が、その SWF のアプリケーションドメインにロードされていて、アプリケーションコンテンツである場合は、この SWF を NativeWindow ウィンドウに直接追加することができます。

なんて事が書いてありました。

そこで試しに、Airのメイン画面をWindowedApplicationにして、そこからWindowの画面をもう一つ表示させてみた時点で、
  trace(NativeApplication.nativeApplication.openedWindows);
としてみたら、NativeWindowが2つ入っていました。

ってことで。。。多分、WindowedApplicationとかはNativeWindowとして作られているのかな。


...こぅいぅ情報って、しっかりとした情報が何処かにないのかなぁ?
• • •