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 View:View3D; private var swfStage:Stage; // HoverCam controls 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() { // create a 3D-viewport camera = new HoverCamera3D({zoom:2, focus:100, distance:250}); View = new View3D({camera:camera,x:250, y:200}); // add viewport to the stage addChild(View); camera.targetpanangle = camera.panangle = 45; camera.targettiltangle = camera.tiltangle = 20; camera.mintiltangle = -90; // Add some reference objects var mat:ColorMaterial = new ColorMaterial(0xffff00); var sphere1:Sphere = new Sphere({radius:10, material:mat, x:100,y:-150,bothsides:true}); View.scene.addChild(sphere1); mat = new ColorMaterial(0xff00ff); var sphere2:Sphere = new Sphere({radius:10, material:mat, y:200,z:150,bothsides:true}); View.scene.addChild(sphere2); mat = new ColorMaterial(0x00ffff); var sphere3:Sphere = new Sphere({radius:10, material:mat, z:100,x:-150,bothsides:true}); View.scene.addChild(sphere3); // Show the axis var axis:Trident = new Trident(180); View.scene.addChild(axis); // only run when user is hovering addEventListener(Event.ENTER_FRAME, onEnterFrame); 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 { // rerender viewport 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(); View.render(); } } }