清理代码 增加鼠标状态. 使用鼠标状态控制相机.

pull/7/head
ChenX 7 years ago
parent 826e403a57
commit f81cf52276

@ -1,5 +1,5 @@
//相机控制
import * as THREE from "three";
import * as THREE from 'three';
import { Viewer } from '../GraphicsSystem/Viewer';
import { PlaneExt } from '../Geometry/Plane';
import { Line3 } from 'three';
@ -32,6 +32,7 @@ export class CameraControls
m_DollyEnd: THREE.Vector2 = new THREE.Vector2();
m_KeyDown = new Map<string, boolean>();
m_MouseDown = new Map<MouseKey, boolean>();
m_bKeyCtrlIsDown: boolean;
//状态
@ -60,14 +61,21 @@ export class CameraControls
this.m_domElement.addEventListener('touchend', this.onTouchEnd, false);
this.m_domElement.addEventListener('touchmove', this.onTouchMove, false);
window.addEventListener("blur", () =>
{
this.m_KeyDown.clear();
})
window.addEventListener("blur", this.onBlur, false);
}
}
/**
* .
*
* @memberof CameraControls
*/
onBlur = () =>
{
this.m_KeyDown.clear();
this.m_MouseDown.clear();
}
//触屏
//触屏开始事件
onTouchStart = (event: TouchEvent) =>
{
this.m_StartChickPoint.set(event.touches[0].pageX, event.touches[0].pageY, 0);
@ -136,35 +144,14 @@ export class CameraControls
{
event.preventDefault();
let key: MouseKey = event.button;
this.m_MouseDown.set(key, true);
this.m_StartChickPoint.set(event.offsetX, event.offsetY, 0);
switch (key)
{
case MouseKey.Left:
{
break;
}
case MouseKey.Middle:
{
if (this.m_KeyDown.get("Alt"))
{
this.m_State = CameraControlState.Rotate;
}
else
{
this.m_State = CameraControlState.Pan;
}
break;
}
case MouseKey.Right:
{
break;
}
}
}
onMouseUp = (event: MouseEvent) =>
{
event.preventDefault();
this.m_State = CameraControlState.Null;
this.m_MouseDown.set(event.button, false);
}
onMouseMove = (event: MouseEvent) =>
{
@ -175,27 +162,23 @@ export class CameraControls
changeVec.subVectors(this.m_EndChickPoint, this.m_StartChickPoint);
this.m_StartChickPoint.copy(this.m_EndChickPoint);
if (this.m_KeyDown.get("Alt") && this.m_State == CameraControlState.Rotate)
if (this.m_MouseDown.get(MouseKey.Middle))
{
this.m_Viewer.Rotate(changeVec);
}
switch (this.m_State)
{
case CameraControlState.Pan:
{
this.m_Viewer.Pan(changeVec);
break;
}
case CameraControlState.Rotate:
{
break;
}
case CameraControlState.Scale:
{
break;
}
if (this.m_KeyDown.get("Alt"))
{
this.m_Viewer.Rotate(changeVec);
}
else
{
this.m_Viewer.Pan(changeVec);
}
}
}
/**
*
*
* @memberof CameraControls
*/
onMouseWheel = (event: WheelEvent) =>
{
event.preventDefault();
@ -207,7 +190,8 @@ export class CameraControls
if (event.deltaY < 0)
{
this.m_Viewer.Zoom(0.6, pt);
} else if (event.deltaY > 0)
}
else if (event.deltaY > 0)
{
this.m_Viewer.Zoom(1.4, pt);
}

Loading…
Cancel
Save