事件
大约 2 分钟
事件
事件(Event)指的是由系统事先设定的、能被对象识别和响应的动作,事件是指对象对于外部动作的响应,当对方发生了某个事件,就会执行于此事件对应的代码。比如用鼠标在一个对象上按下,这个对象预先设定了识别鼠标按下这个事件,就会执行对应的代码。
引擎事件管理器支持鼠标事件、相机事件,场景和物体的事件独立管理。
鼠标事件
Viewer
监听事件类型如下:
事件名 | 事件说明 |
---|---|
click | 鼠标点击 |
dblclick | 鼠标左键双击 |
mouseover | 鼠标滑过 |
contextmenu | 鼠标右键点击 |
使用方式如下:
viewer.on("click", (event) => {
// 获取点击的对象,点击时的位置
const {object, position} = event;
});
相机事件
相机监听事件如下:
事件名 | 事件说明 |
---|---|
dragstart | 拖拽开始 |
dragging | 拖拽 |
dragend | 拖拽结束 |
rotatestart | 相机旋转 |
rotate | 相机旋转 |
rotateend | 相机旋转 |
dolly | 缩放 |
// 监听拖拽
viewer.cameraControl.addEventListener("dragging", (event) => {
// 响应代码
});
场景事件
事件名 | 事件说明 |
---|---|
loaded | 加载完成 |
scene.addEventListener("loaded", () => {
// 响应代码
});
物体事件
物体事件常规响应事件如下,开发人员可自定义事件
事件名 | 适用对象 | 说明 |
---|---|---|
added | Thing | 添加到父结点时 |
removed | Thing | 从父节点删除时 |
loaded | Model、ImagePlane | 远程资源加载完成 |
var model = new VT.Model({
modelType: "gltf",
src: "./resources/scene/models/test/1.gltf"
});
// 事件监听
model.addEventListener("loaded", () => {
// 响应代码
});
键盘事件
引擎内置了hotkeys-js,如果需要监听键盘事件,可使用VT.hotkeys
调用相关方法,详细文档见https://www.npmjs.com/package/hotkeys-js
// 监听键盘F5按键
VT.hotkeys('f5', function(event, handler){
// Prevent the default refresh event under WINDOWS system
event.preventDefault()
alert(' pressed F5!')
});
自定义事件
Viewer
和所有物体均继承自事件基类BaseEvent
,可直接调用事件派发方法dispatch
触发事件,见下:
// 监听事件
viewer.addEventListener("customEventName");
// 触发事件
viewer.dispatch({type: "customEventName"});