note.xさん有難う御座います!!(全ての原因は、第5引数のRectangleだった説)
以前のエントリで、MovieMaterialにスクリプトアニメーションを行うswfファイルやSpriteを放り込んだら挙動が酷い事になったという悩みを書き、note.xさんにTBを投げてみた所、有り難い事に検証&解決策を提示して頂けた。
解決法と言うのが、MovieMaterialの第5引数にRectangleを指定すると言う方法。分かってみれば当然指定すべき部分な気がする。これ見逃してた俺は何なの?バカなの?死ぬの?
と言うことで、早速試してみた結果のdemoがこちら。見事改善されている。
これで、次はFLARToolKitとの連携だな。
これが、新しい読み込みコード。
rmv.addEventListener(Event.COMPLETE, function(e:Event):void
{
var mt:MovieMaterial = new MovieMaterial(rmv, true, true, true, new Rectangle(0,0,400,300));
mt.doubleSided = true;
var p:Plane = new Plane(mt, 400, 300, 4, 4);
scene.addChild(p);
addEventListener(Event.ENTER_FRAME, function(e:Event):void
{
p.rotationY += 2;
});
startRendering();
});
/* この部分に、任意のRSSフィードのURLを格納する */
rmv.load(new URLRequest("http://blog.tarotaro.org/feed"));
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void
{
var mt:MovieMaterial = new MovieMaterial(loader, false, true, true,new Rectangle(0,0,640,480));
mt.doubleSided = true;
var p:Plane = new Plane(mt, 400, 300, 4, 4);
p.rotationY = 90;
scene.addChild(p);
addEventListener(Event.ENTER_FRAME, function(e:Event):void
{
p.rotationY += 2;
});
startRendering();
});
/* この部分に、RSSMatrixViewSample.asをコンパイルした結果出来たswfファイルのURLを格納する */
loader.load(new URLRequest("rss.swf"));
loader.scaleX = loader.scaleY = 400 / 640;
まず、newして読み込む方だが、こちらはMovieMaterialの第5引数にnew Rectangle(0,0,400,300)を指定するだけで上手くいった。で、swfファイルを読み込む方だが、こちらはswfファイルのサイズが640×480だったので、new Rectangle(0,0,640,480)とした上で、swfファイルを読み込んだLoaderのscaleXとscaleYを変更し、400×300にしてみたり、new Rectangle(0,0,400,300)としてみたり、色々したんだが、どうも右端がわずかに切れている気がする。大きさ的には問題ないんだが、左に消えた文字が右から出てくるまでに、若干のタイムラグがある。
結論としては、swfファイルを読み込むよりはnewした方がいいという事だろう。
しかし、最大の驚きは、Rectangleをちゃんと設定したら、動きが滑らかになったと言う事だ。今までのカクカクした動きも、Rectangleの所為だったと言う事か。どういうことだ?
コードは、例によってSpark Projectにコミットした(と言うか更新)。




