前置きのつもりがActionScript3.0のグチに・・・
Flash & Adobe AIR
いきなり編集後記。 すごいグチになってしまった・・・。
Flash Player10(コードネーム Astro)が一般公開されました。 年内公開のAdobe AIR1.5(コードネームCosmo)からも、Flash Player10の部分も扱えるようになる(リンク先は海外サイト)です。 このバージョンアップでVectorクラスが使えるようになります。 Vectorクラスは配列を扱うクラスで、収められる型が限定されるものの、処理速度が上がるというもの。 一種類の型しか入れられない配列なんて、どんな言語でもあるとは思うんですが、実はActionScript3.0にはそれがなく、リファレンスとか見た感じでも、だいぶ無理な感じがしていました。例えば、DisplayObjectのfilterプロパティなんかがそうで、この変数はArray型なんですが、型の中身については言語的に指定できないので、こんな説明が書いてあります。filters プロパティ filters:Array [読み取り-書き込み] 表示オブジェクトに現在関連付けられている各フィルタオブジェクトが格納されているインデックス付きの配列です。flash.filters パッケージには、使用可能な特定のフィルタを定義する複数のクラスが含まれています。この配列にBooleanとかintを持つ配列・・・例えば。var array:Array = [new BevelFilter(), "string", true, 15]みたいなものを代入してもコンパイルエラーは出ず、不便でした。 配列中に妙な型をちょっとしたミスで入れて、気付かない場合、バグを見つけるのに時間がかかるので、現在進行形でかなり気を使ってます。間に何か挟んで、型を一つにする手もあるんですが、色々面倒でやってない・・・ってのもあります。プログラムには下みたいな感じで何の配列か明示してるつもりです。private var nicoVideos:Array = new Array(); // of NicoVideoInfo
あと、ActionScript3.0で不便に思うことといえば、オーバーロードできない(*1)、とかSocketがlistenできないとかかな。あんまり使わない機能だけど、追加してくれると嬉しいなー。 (*1):関数の引数を*型にして、isで型チェックすれば擬似的にオーバーロードできます。ただ、これも引数の型が期待してるものかが実行するまでわからないという欠点付き。(ローデンはオーバーロード使うと関数の内容が覚えられなくなるので基本的に使いません。)
最終更新: 2023/05/07 16:49


