`
sjkgxf7191
  • 浏览: 251720 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flash3D编程技巧:物体环视浏览器(Away3D)

阅读更多

定义一些以后会用到的变量:

private var View:View3D;

// 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;

 

增加一个HoverCamera3D并且设置它为视图要使用的camera:

camera = new HoverCamera3D({zoom:2, focus:100, distance:250});
View = new View3D({camera:camera,x:250, y:200});

 

设置camera的一些初始属性值:

camera.targetpanangle = camera.panangle = 45;
camera.targettiltangle = camera.tiltangle = 20;
camera.mintiltangle = -90;

 

启用ENTER_FRAME侦听器:

addEventListener(Event.ENTER_FRAME, onEnterFrame);

 

启用鼠标按下、释放侦听器:

this.stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
this.stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);

 

鼠标按下的时候,需要记录下camera的一些当前参数:

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

 
where 'the magic' happens:重新计算新的camera位置

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();
}
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics