2009年7月アーカイブ

今年もやるそうです。
AIRコンテスト


Adobe AIR Contest 2009



ひがやすをさんのAIRコンパアプリに期待。




研究室の方々が、研究で作るデモアプリをAdobe AIRで実装するらしいので、
あえて初心者向けの内容も、脳内キャッシュからノートにシリアライズ。


まずは、ViewとLogicの分離について、IMXMLObjectインターフェースを使ったやり方。


【目的】
Viewを.mxmlファイルに、Logicを.asファイルに分けて記述したい。
mxmlから<mx:Script>タグや、<mx:Button click="hoge()">みたいなのを撲滅する!!



【方針】
Buttonコンポーネントを持つViewをMVCSampleView.mxmlファイルに記述し、
MVCSampleLogic.asファイルに、そのButtonをクリックした際にAlertを表示するようにLogicを記述する。



【結果】
実装結果。[右クリック -> ソースを表示]でソースが見れます。





【解説】
・MVCSampleViewクラス
 <mx:Application>タグに、creationComplete="creationCompleteHandler()"なんて書かない!!
代わりに、

を入れてやる。

Buttonには、"button"というidを振っておく。



・Logicクラス
 IMXMLObjectインターフェースは、UIComponentを継承しないけど、mxmlにタグとしてオブジェクトを貼付けたいときに実装すべきインターフェースで、
このIMXMLObjectインターフェースをimplementsし、initializedメソッドを実装する。
引数は document:Object, id:String で、
initializedメソッドはFlexフレームワークにより自動的に呼ばれる。タイミングはmxmlのinitializeの時(たぶん)。
 この場合では、documentにはこのオブジェクトを生成したmxmlであるMVCSampleViewへの参照が、idには、文字列"logic"が与えられる。

 そして、ViewのCreationCompleteのタイミングでメソッドが呼ばれるようにしておき、
サブクラスがオーバーライドできるようにしておく。



・MVCSampleLogicクラス
 プライベート変数として_viewを宣言。(プライベート変数は、先頭に'_'をつける習慣がある)
高速化とコード補完の意味を兼ねて、MVCSampleViewで型宣言もしておく。


 Logicで定義した、view_initializeHandlerをオーバーライドし、
この中で、_viewにMVCSampleViewへの参照を入れておく。この内容の処理は、initializedをオーバーライドして、その中に書いてもほぼ同じこと。
initializeフェーズでは、子コンポーネントの生成や、Viewの見た目に影響のある初期化処理を行う。


 次に、view_creationCompleteHandlerをオーバーライドする。
このタイミングでは、描画準備の処理が行われているので、今更Viewに大きな影響を与えるような処理は書かない。
イベントリスナーを追加するくらい。

なので、buttonオブジェクトにクリックイベントのイベントリスナーを追加する。




【まとめ】
・mxmlには、ActionScriptを(極力)書かない。サンプルでよく書かれているのは、複数ファイルにわけるとサンプルが見にくくなるし、実際に提示したい提示したいコード以外のところであまり記述を増やしたくないため

・mxmlにスクリプトを書かない代わりに、IMXMLObjectを実装したクラスを貼っておく。

・main関数みたいな感じで、IMXMLObjectクラスのinitializedメソッドが自動で呼ばれる。

・InitializeとCreationCompleteの適切なタイミングで、適切な処理を記述する。


<参考>
SQLiteのDB操作を追加してAIRウィジェットを完成(1/4)- @IT


このアーカイブについて

このページには、2009年7月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年6月です。

次のアーカイブは2009年9月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 5.0