Home > papervision3d > Papervision3Dのオブジェクトをマウスの位置に応じて回転させる

Papervision3Dのオブジェクトをマウスの位置に応じて回転させる

前回のエントリで作ったオブジェクトを、少し複雑に回転させてみます。
マウスの位置に応じて回転数を変更します。

マウスの位置を取得する

Flashではマウス位置をとっても簡単に取得できるようです。
コンテナから簡単に取得できます。

container.mouseX

この値をマウスの回転角度に加えます。

planeObj.rotationY += this.container.mouseY / 50;
planeObj.rotationX += this.container.mouseX / 50;

その結果はこうなります。

変更後の全ソースコード

上のswfのコンパイル前のソースコードです。

package {
    import flash.display.*;
    import flash.events.*;
 
    import org.papervision3d.scenes.*;
    import org.papervision3d.objects.*;
    import org.papervision3d.cameras.*;
    import org.papervision3d.materials.*;
 
    [SWF(backgroundColor=0x000000)]
 
    public class MyPlane extends Sprite
    {
        private var container : Sprite;
        private var scene     : Scene3D;
        private var camera    : Camera3D;
        private var rootNode  : DisplayObject3D;
 
        private var planeObj  : DisplayObject3D;
        private var planeSize : int = 300;//Planeオブジェクト1辺の長さ
        private var segment   : int = 1;  //面の分割数
        private var material  : ColorMaterial;
 
        private var valx      : Number = 0;
        private var valy      : Number = 0;
 
        //---------------------------------------------Constructor
        public function MyPlane():void
        {
            stage.frameRate = 60;
            stage.quality   = "MEDIUM";
            stage.scaleMode = "noScale";
            stage.align = StageAlign.TOP_LEFT;
 
            //コンテナ生成
            container = new Sprite();
            container.x = 200;
            container.y = 200;
            stage.addChild( container );
 
            //シーン生成
            scene = new Scene3D( container );
 
            //rootNode生成
            rootNode = new DisplayObject3D();
            scene.addChild( rootNode );
 
            //マテリアル設定
            material = new ColorMaterial( 0xffffff, 1 );
            material.oneSide = false;
 
            //Planeオブジェクト生成
            planeObj = new Plane( material, planeSize, planeSize, segment, segment );
            rootNode.addChild( planeObj );
 
            //camera設定
            camera = new Camera3D();
            camera.z = -planeSize;
            camera.focus = 50;
            camera.zoom = 1;
 
            stage.addEventListener(Event.ENTER_FRAME, loop);
        }
 
        //---------------------------------------------loop                                                                     
        private function loop( event:Event ):void
        {
            // 回転
            planeObj.rotationY += this.container.mouseY / 50;
            planeObj.rotationX += this.container.mouseX / 50;
 
            //再レンダリング
            scene.renderCamera( camera );
        }
    }
}
関連のありそうなエントリ

Comments:0

Comment Form
Remember personal info

*
To prove that you're not a bot, enter this code
Anti-Spam Image

Trackbacks:0

Trackback URL for this entry
http://www.adamrocker.com/blog/128/papervision3d_rotation_plane.html/trackback/
Listed below are links to weblogs that reference
Papervision3Dのオブジェクトをマウスの位置に応じて回転させる from throw Life

Home > papervision3d > Papervision3Dのオブジェクトをマウスの位置に応じて回転させる

Search
Feeds
Meta

Return to page top