arikata | 2010.10.1
Flashで重い3Dデータとかを普通にパースすると、
下手したらローディングより時間がかかってしまいます。
そこであらかじめパース済みのインスタンスをByteAraryに変換し、ファイルに保存。
実際使うときはファイルをロードしてreadObjectしてやればいいんじゃね?と思い、
とりあえずPV3Dで実験。
wavefrontファイルを読み込み、TriangleMesh3D=>ByteArrayにするAirを作成。
調子にのってプレビュー機能もつけてみた。
TriangleMesh3DインスタンスをByteArrayに変換し、ファイルの保存までは順調に成功。
読み込もうとすると、下記エラーが。。
ArgumentError: Error #1063: Argument count mismatch on org.papervision3d.core.geom.renderables::Triangle3D(). Expected 2, got 0.
at flash.utils::ByteArray/readObject()
そうでした。。
インスタンスのディープコピーのときByteArrayを使ってはまった記憶が蘇りました。。
インスタンスが継承している全てのクラスのコンストラクタは
全て引数なしで呼び出せる必要があるらしい。
てことで自分でライブラリ作るときはコンストラクタに気をつけます。。