AS3勉強会資料
先日、スーパーな方々に集まっていただき勉強会を開きました。インタラクティブデザインを表現するためのプログラミングを、さっぱり知らなかったので自分が勉強させてもらいまくり会でした。参加者のみなさん、ありがとうございました!
以下、そんなに役に立たないと思われる資料です。Flex2/Apollo に対する雑感とかそんな感じ。
Flex2
Flex2 フレームワークについていろいろ
- 雑感
 - 悪いところ
 - 良いところ
 
Flex 弄っての雑感
- すべて理解しようとすると覚えること大杉
- 最低の全機能覚えるだけでまるまる5日ぐらいかかりそう
 - 導入・投資コストに見合う価値は?
 
 - Flex 自体のサイクル
- もうじき 3 が出るぽい?
- 1.5 > 2 ほどは違わないらしい
 
 - サイクル早杉?
 - 手になじんだ頃には次 ver?
 
 - もうじき 3 が出るぽい?
 
Flex の悪いところ
- UI なパッケージを含めると突然200Kbyte 超え
 - できの良い、汎用的な Compornent 作るのは大変
- まず UICompornent だけでも覚えること大杉
 - namespace mx_internal 使いまくる
 - 汎用的なの作らなければおk
 
 - 独自のStyle(CSS)の名前が似てるけど違う
- 割と flex での CSS を一から覚え直し
 - default.css 嫁
 - でも Flex2 Style Explorer が激しく便利
 
 
Flex の良いところ
- できの良い UI コンポーネント
 - コンパイラとの連携
 - 各種 Collection
 
できの良い UI コンポーネント
- 基本をおさえている
- デザイニング・インターフェース(本)に載ってるような基本的なパターンはほぼ網羅
 
 - データバインディング便利
 - レイアウトの相対指定
- Flash で相対指定するの大変じゃない?
- Appolo アプリだと相対指定を考えないと(後述)
 
 
 - Flash で相対指定するの大変じゃない?
 
コンパイラとの連携
- 独自メタデータタグの解釈
- Bindable
- 自動 getter/setter
 - 自動 PropertyChangeEvent 投げ
 - http://d.hatena.ne.jp/secondlife/20070326/1174904664
 
 - Embed
- SWF・フォント・画像・XMLなどの埋め込み
 
 
 - Bindable
 
ここら辺は使ってもほとんどサイズ増えないから積極利用
各種 Collection
- ArrayCollection
- リスト形式のデータ
 
 - XMLListCollection
- ツリー形式(親子関係をもつ)データ
 
 
Collection って何よ?
- 主にデータプロバイダとして使う
 - コレクションの値に変化があるとイベントを投げる
 - コレクションの子配下すべての変更もイベント投げる
- そこで [Bindable]
 - コレクションの子データに Bindable なバインディングを実装
 - 一番上のコレクションのイベントをキャッチするだけ
 
 - Flex の UI つかわなくとも View の切り替えで便利げ
 - IListView や ICollectionView を実装することで自分ですきなのも
 
AMF/Flex Data Service を使ったリモートオブジェクトの呼び出し
- FMS 使わずにとも別言語で
 - ruby(Rails)/php などなど
- 認証もわりと楽だし
 - サーバサイドのメソッド直接呼び出しできるし
 - ページャの実装も ArrayCollection 使うと楽に
 
 
Flex2 まとめ
時と場合によって使い分けましょう
- 入力インターフェイスがたくさん
 - 画面遷移がたくさん
- UIコンポーネント使う
 
 - それ以外
- Collection/Bindable だけでも
 
 
Apollo
アルファ版が出て一部で話題
Apollo のよくありそうな今後
- ブログパーツ系がこそってデスクトップアプリでも同時リリース
- マスコットぽのがデスクトップでも!みたいな
 
 - Apollo でも使える設計でコードを書く
- 割と簡単
 
 - デスクトップ全体をターゲットとすると相対指定できると便利
- flex の UIcomp か?
 
 
Apollo の微妙な所
- OS ネイティブの機能使えない
- 低レベルAPIも使いたいことも
 - クライアントアプリのうれしさ半減
 
 - 言語によくある System() 関数が使えない
- コマンドの入出力だけでもつかえたらなー…
 
 
愚痴っても始まらないので
ローカルとの通信
リアルタイムでクライアントマシンとやりとりしたい
- 別アプリで Socket サーバ立ち上げ
 - Socket から情報を流しっぱなし
 - AS3 からの Socket クラスでコネクション張りっぱ読み取り
- が一番コストの低い方法か?
 
 - デモ・ThinkPad の加速度センサを Apollo から読み取る