|

- 精华
- 0
- 积分
- 46
- 威望
- 0 点
- 银子
- 23 两
- 金子
- 0 两
|
12#
发表于 2010-3-9 10:52
| 只看该作者
private var isOrbiting:Boolean;
private var previousMouseX:Number;
private var previousMouseY:Number;
private var easePitch:Number = 90;
private var easeYaw:Number = 270;
private var easeOut:Number = 0.1;
stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown1);
stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMove1);
stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp1);
鼠标按下的事件代码如下:
private function onMouseDown1(e:MouseEvent):void
{
isOrbiting = true;
previousMouseX = e.stageX;
previousMouseY = e.stageY;
}
isOrbiting作为鼠标按下或弹起的标志
previousMouseX和previousMouseY保存前一帧鼠标的x,y坐标,用于鼠标移动的事件处理器中.
添加鼠标弹起处理器,只是简单的将isOrbitiong设为false
private function onMouseUp1(e:MouseEvent):void
{
isOrbiting = false;
}
private function onMouseMove1(e:MouseEvent):void
{
var differenceX:Number = e.stageX - previousMouseX;
var differenceY:Number = e.stageY - previousMouseY;
if(isOrbiting){
camPitch += differenceY;
camYaw += differenceX;
previousMouseX = e.stageX;
previousMouseY = e.stageY;
}
}
在渲染里加入
easePitch += (camPitch - easePitch) * easeOut;
easeYaw += (camYaw - easeYaw) * easeOut;
camera.orbit(easePitch,easeYaw); |
|