Papervision3d はじめの四歩 マウスイベント
クリックすると拡大するのを作成してみた。


-
コツはBasicViewとかのView系?のものが存在するのかわからないけど、そのinteractiveプロパティと
Material系のinteractiveプロパティをtrueにしてやるとマウスイベントを受け取る下準備ができる。
-
次に、InteractiveScene3DEventでaddEventListenerできるようになる!
BasicViewの場合は、第4引数をtrueにしてやることでinteractiveプロパティをtrueにする。
bmm.interactive = true; var basicview:BasicView = new BasicView(640, 480, true, true); _plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, clickHandler);
package myproject { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.InteractiveObject; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; import org.papervision3d.materials.BitmapMaterial; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.view.BasicView; import org.papervision3d.events.InteractiveScene3DEvent; public class Index extends Sprite { private var _plane:Plane public function Index():void { var loader:Loader = new Loader(); var urlReq:URLRequest = new URLRequest("http://blog.yaimo.net/wordpress/wp-content/uploads/2009/05/ramen1.jpg"); if (stage != null) { loader.load(urlReq); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); } } private function completeHandler(e:Event):void { e.target.removeEventListener(Event.COMPLETE, completeHandler); this.addChild(e.target.loader); var bmp:BitmapData = new BitmapData(100, 100); bmp.draw(e.target.loader); var bm:Bitmap = new Bitmap(bmp); bm.x = 100; bm.y = 100; addChild(bm); var bmm:BitmapMaterial = new BitmapMaterial(bmp); bmm.doubleSided = true; bmm.smooth = true; bmm.interactive = true; _plane = new Plane(bmm, 100, 100, 3, 3); var basicview:BasicView = new BasicView(640, 480, true, true); basicview.scene.addChild(_plane); basicview.startRendering(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); addChild(basicview); _plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, clickHandler); } private function clickHandler(e:InteractiveScene3DEvent):void { _plane.scale += 0.2; } private function enterFrameHandler(e:Event):void { _plane.rotationX += 2; } } }
