FLEX
仕事でAdobe FLEXを使っている。
FLEXは、ActionScriptでプログラミングして、コンパイルするとSWFが出来る。
Flashの概念とJavaに通じるオブジェクト指向が、こんがらがっていて非常に扱いづらい。
できの悪いVB.netとでも言うべきものだ。
Flash特有のユーザーコントロール(UIコンポーネント)が用意されているので、見た目がリッチなアプリケーションをさくっと作れる。
ただ、難しいことは出来ない。
UIコンポーネントのクローンが作れない、プリント機能が非常に弱い、ファイル保存が弱い、Flashの機能を完全には享受できないなどの制約がある。
あと、フレームと言う概念を持たないUIコンポーネントを使うと、イベント発生でプロシージャが終了した後に、描画が開始されるという奇妙な動きをする。
つまり、ユーザーが書いたプログラムが実行し終了してから、その記述通りに描画されるのである。
たとえば本をめくる処理があったとすると、
ページめくり(UIコンポーネントのイベント発行)→ページ切り替え処理→処理終了→ページ切り替えの描画開始→イベント待ち状態
となる。
もし、切り替え処理中の描画オブジェクトを新しくインスタンスに挿入しても、UIDだけの空のメモリが渡されてしまう。
中身が入っているかを調べてもUIDが取得できるだけで、実際のメモリに書き込まれているかはわからない。
この辺は、FLASHのUIコンポーネントの実装方法に問題があるのだろう。
また、描画オブジェクトは、親となるインスタンスを2つ以上持つことが出来ない制限があって、同じ型のオブジェクトを宣言して、新しくインスタンスを作成して、クローンを作ろうとしても、クローニングされずに、本来のオブジェクトがそのまま渡されてしまう。
つまり、クローンを操作しようとすると、元のオブジェクトが書き換わってしまうと言う問題が発生する。
Adobeによるとこれの回避方法はなく、仕様と言うことになっている。
FLEXで出来ることは非常に少ない。
Javaに似たコーディングでSWFを作成出来るのが売りということだろうか。