以前のエントリで、MovieMaterial
にスクリプトアニメーションを行うswfファイルやSpriteを放り込んだら挙動が酷い事になったという悩みを書き、note.xさんにTBを投げてみた所、有り難い事に検証&解決策を提示して頂けた。
解決法と言うのが、MovieMaterial
の第5引数にRectangle
を指定すると言う方法。分かってみれば当然指定すべき部分な気がする。これ見逃してた俺は何なの?バカなの?死ぬの?
と言うことで、早速試してみた結果のdemoがこちら。見事改善されている。
これで、次はFLARToolKitとの連携だな。
これが、新しい読み込みコード。
- var rmv:RSSMatrixView = new RSSMatrixView(new Rectangle(0, 0, 400, 300));
- 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("https://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にコミットした(と言うか更新)。