forked from: PV3D 習作1

by Renowan
clockmakerさんのブログやコードを参考にさせてもらいました。
マウスドラッグで立方体が回転します。
♥0 | Line 50 | Modified 2009-05-22 16:37:14 | MIT License
play

ActionScript3 source code

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

// forked from CHAOSLAVE's PV3D 習作1
//clockmakerさんのブログやコードを参考にさせてもらいました。
//マウスドラッグで立方体が回転します。

package {
    import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import flash.events.Event;

	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.view.BasicView;

    public class Main extends MovieClip {
        private var isMouseDownFlag:Boolean;

	    private var world:BasicView;
	    private var material:WireframeMaterial;
	    private var obj:Cube;

	    private var preMouseX:Number;
	    private var preMouseY:Number;
        
        
    public function Main() {
        world = new BasicView();
	    addChild(world);
	    world.startRendering();

	    material = new WireframeMaterial(0x0000FF);
	    material.doubleSided = true;

	    obj = new Cube(new MaterialsList({all : material}), 500, 500, 500, 10, 10, 10);
	    world.scene.addChild(obj);
	    
	    stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse_down);   
        }
        
    private function mouse_down(event:MouseEvent):void {
            isMouseDownFlag = true;

            preMouseX = event.stageX;
            preMouseY = event.stageY;

            stage.addEventListener(MouseEvent.MOUSE_MOVE, mouse_move);
            stage.addEventListener(MouseEvent.MOUSE_UP, mouse_up);
            }

    private function mouse_up(event:MouseEvent):void {
            isMouseDownFlag = false;
			
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouse_move);
            stage.removeEventListener(MouseEvent.MOUSE_UP, mouse_up);
            }

    private function mouse_move(event:MouseEvent):void {
            var differenceX:Number = event.stageX - preMouseX;
            var differenceY:Number = event.stageY - preMouseY;

            if (isMouseDownFlag) {
                obj.rotationX += differenceY;
                obj.rotationY += differenceX;

                preMouseX = event.stageX;
                preMouseY = event.stageY;
                }
            }
    }
}