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