blogブログ

MovieAssetMaterial

papervision3D(2.0)で、回転するオブジェクトをつくっていたのですが、planeにムービークリップを貼り付けたかったので、MovieAssetMaterialを使ってたら、いろいろはまってしまったのでメモ。

コンストラクタは、

var material:MovieAssetMaterial = MovieAssetMaterial(
linkageID:String = "",
transparent:Boolean = false,
animated:Boolean = false,
createUnique:Boolean = false,
precise:Boolean = false
);

てな感じですが、linkageIDだけ設定して他の引数を省略したら、挙動が思うようにならず。
以下、他の引数の設定あれこれ。

・transparent
貼り付けたムービークリップに透明部分があるとき、trueだと透過する。
透明pngのところがベタ色(おそらくドキュメント背景色)になっていたので、いろいろ調べたがここをtrueにすることで解決。

・animated
貼り付けたムービークリップのメソッドを実行しようとしたら、実行できず。
どこかでMovieAssetMaterialで貼り付けたムービークリップのメソッドは実行できないと書いていた気がしたのであきらめかけていたが、ここをtrueにしたら実行できた。
animatedはタイムラインの再生だけに関係あると書いてた気がしたのでダメもとだったけど、結果オーライ。

ちなみに、コンストラクタではないが、プロパティで「movie」を使うと、貼り付けたムービークリップにアクセスできる。

var _movie:MovieClip = material.movie as MovieClip;
_movie.hoge();

みたいに貼り付けたムービークリップのメソッドを実行できたりする。
これは継承してるMovieMaterialのプロパティ。
これを実行するのに、animatedをtrueにする必要がある。

・createUnique
同じムービークリップを何回か貼り付けて、その度に違う動きをさせたかったのだが、最初に貼り付けたものをキャッシュのように持ってしまい、違う動きにならない。
ここをtrueにしたら、貼り付けるたびに初期化するらしく違う動きを実行できた。

・precise
回転時にかなり歪んでしまって実用に耐えなかったのだが、ここをtrueにしたらきれいに表示されるようになった。
継承してるBitmapMaterialのプロパティ「precision」をいじってもきれいにはならなかった。

その他いろいろ気づいたところはありますが、ひとまず以上。