RA DIOHEA_D / HOU SE OF_C ARDS
2008/07/19 23:07 - AS3.0
今、巷で話題沸騰の Radiohead が google と組んでやっているアレですが、ワタクシも座標データばダウンロードして、ちょびっと弄くってみましたよ。
っても、基本、AS3S.ORG 様の「RadioheadのプロモーションがGoogle Codeで行われている理由」というエントリーで公開されていたソース(以下オリジナルソース)の丸パクリなんですけどね。
っても、ただパクるだけならバカ丸出し。 だから俺っち独自性の表出として、座標データの読み込み周りを工夫してみました。
配布されている座標データ csv は、ご案内のとおり、1行が一つの座標データで、そのフォーマットは x、y、z、intensity です。
一つの csv ファイルにつきだいたい 12,000 行、これで1フレーム分の全座標データとのこと。
その csv をオリジナルソースそのままに Queue でひとつずつ読み込みます。
で、読んだ csv はまず改行で区切って1行ごとの配列にします(座標データの切り出し)。 さらにその1行をカンマで区切って配列にします(座標構成要素の切り出し)。
ここまではオリジナルソースと同じですが、ここからがちょっと違います。
このように分解した座標データは一般的には Array に、あるいは FlashPlayer10 なら Vector に格納するものですが、私は ByteArray を使ってみました。
いやあ、そろそろ ByteArray とは何たるかと体験してみたいなぁ、と思っておりまして。 でもいきなり難しいことをやろうとすると挫折必至なので、簡単なことからやってみました、てへ。
「ドット・タイポ(2)」で、座標データを DotPosDataPool クラスで二次元 Array に保持する、という話をしましたが、実は第3回のテーマとして、座標データの保持は Array ではなく ByteArray を使おう、というのを用意していたのです。
今回の csv データエンコードでは、その機構を使ってみました。
x、y、z は double として、intensity は uint として ByteArray に write します。
ドット・タイポと同じく DotPosDataPool でおこなっています。
以下のサンプル(画像をクリックするとジャンプします)では csv を50個読み込んでいるんですが、割とイイ速度が出てるんじゃあないでしょうか。
- ソース(ZIP 6.14KB)
なお、ソース中に Queue.as と座標データ csv は含まれていません。
Queue.as は AS3S.ORG 様の「複数の非同期処理の完了を通知するQueueクラス」から入手してください。
座標データは code.google の当該ページから入手してください。
ちなみにこのサンプルでは HoC_AnimationData1_v1.0 の中の 251.csv ~ 300.csv までの50ファイルを使用しました。