2017-12-04 2 views
0

Ich möchte wissen, dass fitToView() vollständig abgeschlossen ist.
Einige Programmprozeduren funktionieren nicht nach fitToView() ohne setTimeout(). Zum Beispiel funktioniert der folgende Code nicht.Wie zu wissen, dass fitToView() vollständig fertig ist

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) 
} 

Der folgende Code funktioniert gut.

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

Allerdings möchte ich die setTimeout nicht so viel wie möglich verwenden.
Gibt es eine Möglichkeit zu wissen, dass fitToView() vollständig abgeschlossen ist?

+0

Hallo, ich überprüfe mit unseren Ingenieuren, ob es ein Ereignis gibt, das zum Zeitpunkt der Fertigstellung des fittoView gestartet wird. –

Antwort

1

Wenn Sie Version 3.2.1 des Betrachters ein neues Ereignis Autodesk.Viewing.CAMERA_TRANSITION_COMPLETED, wird er gefeuert werden, während folgende Übergänge fertig sind:

Go Home Übergang Focus/Fit Übergang zum Ansehen Zustand wiederherstellen Übergang Benannte Ansichten Übergang Jede andere Kameraübergänge

// die

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

}) ;

// eine Aktion auslösen, die die Kamera bewegen und die Veranstaltung

viewer.fitToView(); 

Sie feuern können mehr über die Viewer-Version ändert sich sehen. https://developer.autodesk.com/en/docs/viewer/v2/overview/changelog/3.2.1/

+0

Vielen Dank! –

Verwandte Themen