如何知道 fitToView() 已经完全完成

How to know that fitToView() has finished completely

我想知道 fitToView() 是否完全完成。
如果没有 setTimeout(),某些程序在 fitToView() 之后无法运行。 例如,以下代码不起作用。

const dbid = [1141]
this.viewer.select(dbid)
this.viewer.fitToView(dbid, viewer.model)
zoom() //This will not work

//code from: 
function zoom (){
    var nav = viewer.navigation
    var pos = nav.getPosition()
    var target = nav.getTarget()
    var viewdir = new THREE.Vector3()
    viewdir.subVectors (pos, target).normalize()
    // zooms out by 100 along the view direction
    viewdir.multiplyScalar (1000)
    pos.add(viewdir)
    nav.setPosition(pos)
}

以下代码运行良好。

this.viewer.fitToView(dbid, viewer.model)
setTimeout(function(){
    zoom() //This will work fine
}, 2000)

但是,我尽量不使用setTimeout
有没有办法知道fitToView()完全结束了?

如果您使用查看器的 3.2.1 版新事件 Autodesk.Viewing.CAMERA_TRANSITION_COMPLETED,它将在以下转换完成时触发:

回家过渡 焦点/适合视图过渡 恢复状态转换 命名视图过渡 任何其他相机转换

// 挂钩事件

viewer.addEventListener(Autodesk.Viewing.CAMERA_TRANSITION_COMPLETED, function(){
console.log('camera is no longer moving');

});

// 触发将移动相机并触发事件的动作

viewer.fitToView();

您可以在此处查看有关查看器版本更改的更多信息。 https://developer.autodesk.com/en/docs/viewer/v2/overview/changelog/3.2.1/