away3D的camora之三维坐标拖动旋转实例

/*在fb下新建as项目运行此实例*/
Triaxe2.as
package{
	import away3d.cameras.HoverCamera3D;
	import away3d.containers.View3D;
	import away3d.core.base.Face;
	import away3d.core.base.Vertex;
	import away3d.core.math.Number3D;
	import away3d.materials.ColorMaterial;
	import away3d.primitives.*;
	
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	[SWF(width="500", height="400", frameRate="30", backgroundColor="#FFFFFF")]
	
	public class Triaxe2 extends Sprite{
		private var myView:View3D;
		private var swfStage:Stage;
		private var camera:HoverCamera3D;
		private var lastMouseX:Number;
		private var lastMouseY:Number;
		private var lastPanAngle:Number;
		private var lastTiltAngle:Number;
		private var move:Boolean = false;
		
		public function Triaxe2(){
			camera = new HoverCamera3D({zoom:2, focus:100, distance:250});    // create a 3D-viewport
			myView = new View3D({camera:camera,x:250, y:200});
			addChild(myView);    // add viewport to the stage
			camera.targetpanangle = camera.panangle = 45;
			camera.targettiltangle = camera.tiltangle = 20;
			camera.mintiltangle = -90;
			var mat:ColorMaterial = new ColorMaterial(0xFFFF00);    // Add some reference objects
			var sphere1:Sphere = new Sphere({radius:10, material:mat, x:100, y:-150, bothsides:true});
			myView.scene.addChild(sphere1);
			mat = new ColorMaterial(0xFF00FF);
			var sphere2:Sphere = new Sphere({radius:10, material:mat, y:200, z:150, bothsides:true});
			myView.scene.addChild(sphere2);
			mat = new ColorMaterial(0x00FFFF);
			var sphere3:Sphere = new Sphere({radius:10, material:mat, z:100,x:-150, bothsides:true});
			myView.scene.addChild(sphere3);
			var trident:Trident = new Trident(180);    // Show the axis(trident译为:三叉戟,这里指的三维坐标系)
			myView.scene.addChild(trident);
			addEventListener(Event.ENTER_FRAME, onEnterFrame);    // only run when user is hovering
			this.stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
			this.stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);
		}
		
		private function MouseDown(event:MouseEvent):void{
			lastPanAngle = camera.targetpanangle;
			lastTiltAngle = camera.targettiltangle;
			lastMouseX = stage.mouseX;
			lastMouseY = stage.mouseY;
			move = true;
		}
		
		private function MouseUp(event:MouseEvent):void{
			move = false;
		}
		
		private function onEnterFrame(e:Event):void{
			var cameraSpeed:Number = 0.3;    // Approximately same speed as mouse movement.
			if(move){
				camera.targetpanangle = cameraSpeed*(stage.mouseX - lastMouseX) + lastPanAngle;
				camera.targettiltangle = cameraSpeed*(stage.mouseY - lastMouseY) + lastTiltAngle;
			}
			camera.hover();
			myView.render();
		}
		
	}
}

你可能感兴趣的:(Flash,UP)