feeds2011/01/29カテゴリー:ActionScriptActionScript3.0のVectorクラスTweet私は、今までFlashPlayer9書き出しで仕事をしてきましたが、FlashPlayer10の普及率を考えるとそろそろFlashPlayer10書き出しでも問題ないかなと思い始めました。そこで今回は、FlashPlayer10で新たに追加されたActionScript3.0のVector(ベクター)クラスに関する学習メモです。Vectorクラスは、配列用のクラスなので多くの部分でArrayクラスと似ています。Arrayクラスと大きく違う点は、エレメントのデータ型を指定できる点でしょう。Vectorクラスのエレメントのデータ型はベース型と言い、後置型パラメータシンタックスを使用して指定するようです。簡単なサンプルでテストしてみましょう。Vectorクラスのベース型の指定は、Vector.<データ型>といった記述で行います。Vectorクラスは、Arrayクラスと同じようにトップレベルのパッケージなのでimport文は必要ありません。foo_vector.length);上の例では、Arrayクラスはエレメントのデータ型を指定できないので、String型やNumber型をそのまま格納できています。Vectorクラスではベース型をString型で指定したので、Number型を格納する際にはString型でキャストする必要があります。ActionScript3.0では、データ型を指定することにより、処理の高速化やランタイムデバッグといった恩恵を受けることができますが、Vectorクラスはエレメントのデータ型が指定できるので、Arrayよりも処理が高速なようです。異なるデータ型を格納しようとした時点でエラーを出してくれるので、デバッグも楽になります。気を付けるべき点としては、Vectorクラスでは、必ず0から順番にインデックスを指定しなければならない点でしょう。次の例は、Arrayクラスでは問題ありませんが、Vectorクラスではエラーになります。bar_vector.length);またVectorクラスは、Arrayクラスにはないfixedプロパティを持っており、lengthプロパティを固定することができます。次の例では、Vectorのfixedをtrueにした後で、push()でエレメントを追加しようとしていますが、エラーになります。Sprite());また、記述は少し面倒ですが、Vectorクラスでも多次元配列を扱うことは可能なようです。次の例では多次元配列を作成する際にnew演算子ではなく、トップレベルのVector()関数を使用しています。baz_vector[1][1]);以上、ArrayクラスとVectorクラスの違いを中心に見てきましたが、違いといってもこれくらいです。リファレンスを見比べてみましたが、ほとんどArrayクラスと同じプロパティやメソッドを持っているので、違和感なく使用できると感じました。これからは、ArrayクラスとVectorクラスを上手く使い分けていきたいと思います。