仕事でFlex使ってます。
まるで触ったことの無かったFlexですがだいぶ慣れてきました。
とはいいつつも最初は右も左もわからず冷や汗ものでございましたが…。
開発途中で気づいた、詰まった事を書いていってみます。
1.FlexのCSS
http://www.loscavio.com/downloads/blog/flex3_css_list/flex3_css_list.htm
Flexはスタイルも使用できるのですがHTMLのCSSとは絶妙に違うので上記参照必須です。
使用するコンポーネントによって使えるスタイルが変わってくるので注意です。
.Window{
backgroundImage:Embed('parts.swf', symbol='header');
backgroundSize:"100%";
}
こんな感じで指定します。
2.カスタムコンポーネント
アプリケーションの再利用が必要な部分をそのままカスタムコンポーネントにして、
アクションスクリプトでクラスとして読み込んでaddChildしたりとかできます。
custom.mxml
base.as
private function titleFunc():void{
var newTitle:custom = new custom();
newTitle.titleText.text = "タイトル";
VBOX.addChild(newTitle);
}
カスタムコンポーネント以外にFlexのコンポーネントもnew Box()とかnew Canvas()とかで生成できます。
3.width="100%"とか多用すると超重くなる。
なので要注意です。
ちなみにスクリプトで100%を使用するときはpercentWidth=100を使用します。
4.mxmlでStringなどを使いたい場合は宣言しておく。
こんな感じで始めに宣言しておきます。
5.データバインディング
変更があった場合も反映されるので便利。
こんな書き方もOK
6.RemoteObjectを使う場合endpoint="{'http://{server.name}:{server.port}/flex2gateway/'}"
を指定するとパフォーマンスアップする。
ローカルでテストする場合は絶対URLを指定しましょう。
7.Buttonのイベントをclick="CLICK()"等で指定した場合removeEventListenerで削除できない。
そのまんまです。
http://livedocs.adobe.com/flex/201_jp/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=events_054_09.html
8.カスタムコンポーネントからfunctionを呼び出す
click="parentDocument.clickfunc();"
parentDocumentで上の上位階層のfunctionを呼ぶわけですね。
階層構造になっているわけで、Flashの_parentと同じです。
9.豊富なエフェクトを使用できる
Moveエフェクトや
http://livedocs.adobe.com/flex/201_jp/langref/mx/effects/Move.html
Dissolveエフェクトなど
http://livedocs.adobe.com/flex/201_jp/langref/mx/effects/Dissolve.html
Flexでは既にエフェクトが用意されていて簡単な手順でそれらを使用できます。
10.もちろんライブラリも使用可能
例えばtweenerなら
import caurina.transitions.Tweener;
でインポートすれば使えます。
11.VBoxやHBoxは超便利w
VBoxは内包するオブジェクトを勝手に縦に並べてくれます。
HBoxは横。
12.Buttonの透明度を0にしてもlabelはきえない
なのでリンクテキストのように使用することができます。
13.サーバーとの通信でデータ型を扱える。
例えばDate型だったら
private function loginOK(e:ResultEvent):void {
var reObj:Object = e.result;
var nDate:Data = new Date(retObj.DATE);
}
そのままnew Date()に放り込めるので超便利。感動した。
AS3で可能だと思われる。
14.AIR化する上でAIRに対応していない機能を使っているとAIRにできない。
基本Flexで開発している場合mxmlのApplicationタグをWindowedApplicationタグに変更すればAIR化できる。ですがExternalInterface等サポートされていない機能を使用しているとエラーがでちゃいます。
2週間ほどがっつり使ってみてFlexはRIAの開発環境として非常に優秀だという印象を持ちました。
レイアウトを作成するのがFlexのコンポーネントがあるおかげで非常に楽です。
Flashで作成する場合はレイアウトを作成する段階で非常に多くの労力を割かれてしまうかと。
一から手作りしなければいけませんから。
FlashでRIAやってる諸氏は是非Flexいじってみると良いです。
FireworksCS4でFlexとの連携が強化されるようですが(Fireworksからmxmlが書き出せるようになるのかな?)
Track Back URL
http://www.techno-tokyo.com/mt/mt-tb.cgi/49