fujikiといいます。
Flex 3 SDKとProgressionの組み合わせで、アプリケーション構築をされている方はいらっしゃいますか…?
当方、ネット上で、うまく探し当てることができなかったため、以下のサイトとサンプルを元に作成してみました。
もしすでに効率の良い方法が存在すれば、教えていただきたいです。
http://progression.jp/ja/doc/tutorial/class/
http://trac.progression.jp/browser/development/trunk/examples/flex_project
成果物は以下です。
https://dl.getdropbox.com/u/487976/Flash/Progression/FlexWithProgression.zip
FlexWithProgression/bin/index.htmlを開けば実行できますが、
実行時はどこかWebサーバに設置しないといけないかもしれません(ローカルだとSandbox侵害エラーが出る)。
以下、ざっくりですが、今回やったことです。
1. 構造以下の様な構造です。(mxmlぽい擬似言語使ってあらわしてます)
<mx:Application>
<mx:HBox><mx:Button id="index" /><mx:Button id="goodbye" /></mx:HBox>
<mx:Canvas id="canvas">
<Progression>
<Scene id="index">
[MXMLで作ったFlexコンポーネント]
</Scene>
<Scene id="goodbye">
[MXMLで作ったFlexコンポーネント]
</Scene>
</Progression>
</mx:Canvas>
</mx:Application>
Button@id="index"押下で、Scene@id="index"が表示される。(アプリ起動時のデフォルトシーンもindex)
Button@id="goodbye"押下で、Scene@id="goodbye"が表示される。
2. スケルトンとなるファイルの準備* CS3上でProgression プロジェクトを新規に生成します。
* preloader.flaをパブリッシュし、preloader.swfをビルドします。
3. ソースコードの編集* コードは以下の様な構成になっています。
Main.mxml:
メインルーチン。Progression初期化とか、Application初期化とか。
myproject.scenes:
Progressionのシーンに関するパッケージ。
myproject.casts.labels:
Flexコンポーネントパッケージ。(pages内で呼ばれる)
myproject.casts.pages:
各シーンで表示するFlexコンポーネントパッケージ。後でCastObjectに変換される。
* myproject.casts.{labels|pages}の作成
普通にMXMLでクラスを作成しておきます。
* Main.mxml作成
mx:Applicationの、addedToStageイベントを契機に、Progressionのインスタンス生成、各種ハンドラ設定等を行い、その後indexシーンに飛ばしています。
* Progressionのシーンに関するコードをチュートリアルを参考に記述。
各シーンの、_onLoadメソッド内において、FlexコンポーネントからCastObjectを生成し、親コンテナとなるオブジェクトにaddChildしています。
examples/flex_projectのサンプルでは、Applicationのインスタンスを親コンテナオブジェクトとして、CastObjectをaddChildしていましたが、個人的な利便性を考えて、mx:Canvas@id="canvas"上に、CastObjectをaddChildしています。
また、SceneObjectを拡張して、親コンテナオブジェクトを渡せる様にしています。良い名前は全部取られていたので、SceneBase.workbenchという名前にしてますが、それです。
もしこんなことしなくても、ちゃんとプロパティが存在していたりする場合は、指摘してもらえると助かります。
4. ビルドFlex SDKのコンパイラでビルドします。(当方、FlashDevelopのビルド機能や、build.xmlをantに食わせたりしています)
以上のような感じです。よろしくお願いします。