1. 鼠标事件
Motor.MouseEventType
封装了大多数常用鼠标和触摸事件,使用如下
viewer.addMouseEventListener(Motor.MouseEventType.LEFT_CLICK,function(mouse){
//mouse={position: Cartesian2}
});
上面代码定义了鼠标左键点击事件,回调函数的传入参数是一个mouse
对象,返回当前鼠标点击的屏幕二维坐标(Cartesian2
)
viewer.addMouseEventListener(Motor.MouseEventType.MOUSE_MOVE,function(mouse){
//mouse={endPosition: Cartesian2}
})
上面代码定义了鼠标移动事件,回调函数的传入参数是一个mouse
对象,但是mouse
中的position
变成了endPosition
,返回当前鼠标所在的屏幕二维坐标(Cartesian2
)
2. 点选显示信息
//设置点选后的显示构件信息
viewer.addMouseEventListener(Motor.MouseEventType.LEFT_CLICK,function(mouse){
//根据屏幕坐标coords,获取点选的对象
let obj = viewer.pick(mouse.position,project);
if(obj instanceof Motor.Component){
obj.getProperties().then(data=>{
console.log(data);
});
}
});
3. 点选高亮
let currentSelectedComponent = undefined;
viewer.addMouseEventListener(Motor.MouseEventType.LEFT_CLICK,function(mouse){
//根据屏幕坐标coords,获取点选的对象
let obj = viewer.pick(mouse.position,project);
if (obj instanceof Motor.Component) {
obj.select();
currentSelectedComponent = obj;
}
else{
if(currentSelectedComponent){
currentSelectedComponent.deselect();
}
}
});
4. 点选获取坐标
viewer.addMouseEventListener(Motor.MouseEventType.LEFT_CLICK,function(mouse){
//根据屏幕坐标coords,获取点选处的三维坐标
let position = viewer.pickPosition(mouse.position);
console.log(position);
})
5. 双击构件,镜头飞向构件
viewer.addMouseEventListener(Motor.MouseEventType.LEFT_CLICK,function(mouse){
//根据屏幕坐标coords,获取点选的对象
let obj = viewer.pick(mouse.position,project);
if (obj instanceof Motor.Component) {
viewer.flyTo(obj);//飞向构件
}
})