aqubi+shin1

Recent site activity

Adobe Air‎ > ‎

複数のMXMLとAS3を使う時の子ネタ

AdobeAirで何かアプリケーションを作成しようとした時、複数の画面をMXMLを用意して画面遷移してみたい。
って思いません?

Dialog画面としてMXMLを別に用意して表示する方法がAdobeのリファレンスに載っていたので、参考にしつつ試してみました。
それを試しつつ、分かった事を。


初期起動画面以外にて拡張子が違っても同じファイル名のファイルは同じディレクトリに作成できない。

最初に起動する画面として
  • WindowTest.mxml (中に<mx:Script source="WindowTest.as"/>を記述)
  • WindowTest.as
を作成します。これは当然ながらコンパイルも通ってOK。
これに加えて、WindowTest画面からDialogとして表示させるSimpleTitleWindowを以下として作成。
  •  SimpleTitleWindow.mxml  (中に<mx:Script source="SimpleTitleWindow.as"/>を記述)
  • SimpleTitleWindow.as
WindowTest.as内にてSimpleTitleWindowを表示するために以下のコードを書くと。。。


var login:SimpleTitleWindow=SimpleTitleWindow(

    PopUpManager.createPopUp( this, SimpleTitleWindow , true));


SimpleTitleWindowのクラスが分からない!とコンパイルエラーになります。

上記記述では、SimpleTitleWindow.mxmlのものを表示したいのですが、同名のasクラスとの区別がつかないからエラーになると思われ。


つまり、ライブラリ的に呼び出したいMXML,ASのファイル名とディレクトリ名は一緒にしちゃーいけないっ。


パッケージはフォルダにいれるだけでOK

MXML、ASファイルはフォルダにいれるだけで、パッケージ名となるようです。


例えば、左図のようなパッケージ構成にした場合。

WindowTest.as内では、

import view.SimpleTitleWindow とすればSimpleTitleWindowが扱えます。


SimpleTitleWindow.mxml内では、

<mx:Script source="as3/SimpleTitleWindow.as" />

とscriptの外部ファイルへの参照がかけます。

こちらはファイルへの参照なので、/(スラッシュ区切り)。

相対パスっぽぃですね。どうやら。





コンパイルでは参照されているファイルも参照してくれる

当然っつーたら当然なんですが、参照しているクラスファイル類は探し出して一緒にコンパイル(mxmc)してくれます。
上記の例だとWindowTest.mxml→WindowTest.as→SimpleTitleWindow.mxml→SimpleTitleWindow.as となんらかの参照がありますので、
コンパイル時には
mxmlc +configname=air  WindowTest.mxml
でOk!