前のVectorについてのエントリに続き、更にVectorについていくつか。なんかVectorが一番盛り上がってるんじゃないか俺。
サンプルをアップデートした
まず、以前コミットしたVectorのサンプルをアップデートしたので、併せてご覧下さい。
Vectorの要素は連続していなければならない
例えばArrayだと、要素が2つしか無い状態でも、いきなり100番目の要素を設定出来たりしますが、Vectorでは出来ません。Vectorで値の取得と設定が出来るのは、常に0からlength+1の範囲と決まっていて、インデックスを指定して新しい要素を追加する場合でも、間を空けず、length+1番目の要素に代入しなければいけません。さもなければ、RangeErrorとなります。
Vectorの要素数を固定する
Vectorには、要素数を固定するfixedというプロパティがあります。これをtrue(コンストラクタの第二引数でも指定可能)にすると、lengthが増減するような操作(例えばpush, pop)は出来なくなります。
VectorとArrayのキャスト
ArrayからVectorへのキャストは、次のように通常のキャストと同じ感覚で行うことが可能です。
var vec:Vector.= Vector. ([1, 2, 3]);
ただし、VectorからArrayへのキャストをシンプルに行う方法は無いようです(あったら教えてください)。VectorはArrayとして使えても良いと思うんですけどね・・・。
Vectorの計算にShaderを使う
Vector内の要素に算術的な演算を行う場合、Shaderを使ってGPUネイティブで実行すると速いのではないか?という疑問を投げかけたところ、mutaさんが検証してくれました。
結果としては、やはりShaderを使うと高速化が期待出来そうです。ひとつ気になるのは、getVectorの度に新しいVectorが生成されている気がするので、メモリが爆発しないかどうかですね。
Vectorの改善要望
- 暗黙的なキャスト
- 型不一致の際にpushされるnull
- Arrayへのキャスト
- むしろArrayとしても使えるように
あたりはAdobeに要望を出した方がいいですかね。フォーラムに投稿すれば良いのかな?
サイト内関連記事
この記事へのトラックバック
TrackBack URL:
http://www.be-interactive.org/trackback.php?id=374

コメントはありません。