PV3D クリックイベント

by Makoto_Tanaka
Papervision3Dでマウスクリックをハンドリングする方法。
ポイントは3つ
・Viewport3Dのinteractiveをtrueにする
・Materialのinteractiveをtrueにする
・InteractiveScene3DEventを使ってマウスクリックをイベントに登録する
♥0 | Line 38 | Modified 2010-09-16 15:54:09 | MIT License
play

ActionScript3 source code

/**
 * Copyright Makoto_Tanaka ( http://wonderfl.net/user/Makoto_Tanaka )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/pJ0p
 */

package {
    import flash.text.TextField;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import org.papervision3d.view.BasicView;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.materials.special.*;
    import org.papervision3d.objects.*;
    import org.papervision3d.events.*;
    
    public class FlashTest extends BasicView {
        
        private var _plane:Plane;
        private var _color:Number = 0xffff00;
        
        // コンストラクタ
        public function FlashTest() {
            // 第4引数をtrueにすることでViewport3Dのinteractiveの値がtrueになる。
            super(0,0,true,true);
            
            init();
            
        }
        
        // 初期化
        protected function init():void {
            // 板の追加
            var material:ColorMaterial = new ColorMaterial(_color);
            material.interactive = true;                              // マウスクリックに反応するようにinteractiveをtrueにする
            _plane = new Plane(material, 200, 200, 2, 2);
            scene.addChild(_plane, "plane1");
            _plane.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, onClick);
            
            // レンダリング開始
            startRendering();
        }
        
        // Planeクリックイベント
        private function onClick(e:InteractiveScene3DEvent):void {
            if (_color == 0xffff00) {
                _color = 0xff00ff;
            }
            else {
                _color = 0xffff00;
            }
            
            var material:ColorMaterial = new ColorMaterial(_color);
            material.interactive = true;
           _plane.material = material;
        }
    }
}