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();
}

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值