BeInteractive!

前の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に要望を出した方がいいですかね。フォーラムに投稿すれば良いのかな?

この記事へのトラックバック

閃光的網站・弛緩複合体 -Review Division-
僕様ちゃん的には 3D Effects に目を奪われがちな Astro ですが、ココとか見ると Vector クラスもスゴそうじゃないの。 Array 比、Vector で3倍速、Sh...

TrackBack URL:

http://www.be-interactive.org/trackback.php?id=374

この記事へのコメント

コメントはありません。

コメント書き込み:

カテゴリ

タグ

アーカイブ