如何知道fitToView()完全完成了

时间:2017-12-04 11:20:36

标签: autodesk-forge autodesk-viewer

我想知道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()完全完成了?

1 个答案:

答案 0 :(得分:1)

如果您使用查看器的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();

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