2014-10-03 14 views
5

OK, prima volta utilizzando Cesio. Ho una domanda semplice, non avanzata che ho postato un paio di volte sui loro moduli ma nessuno risponde. Quindi ho pensato di provare qui.Rotazione della telecamera WebGL al cesio, Come arrestare la rotazione

Tutto quello che devo fare è capire come fermare un evento prima di invocarne un altro. Ecco un esempio di cosa sta succedendo. Il mondo gira su user-connect, ma ho bisogno che si fermi se poi clicca su "portami a casa", ecc.

Codice sotto.

Quindi l'argomento in spinGlobe è lo spinRate. Se passo in 0.0 sulla connessione iniziale, non ruoterà. Perfezionare. Quindi, penso che se un evento click (l'utente fa clic su Mi torni a casa), allora invoco spinGlobe (0.0) che il globo smetterebbe di ruotare. Ma non è così. Posso non modificare dinamicamente lo spinRate? O sto andando tutto sbagliato?

spinGlobe(0.5) 

function spinGlobe(dynamicRate) 
var previousTime = Date.now(); 

viewer.clock.onTick.addEventListener(function(clock) { 
var spinRate = dynamicRate; 
var currentTime = Date.now(); 
var delta = (currentTime - previousTime)/1000; 
previousTime = currentTime; 
viewer.scene.camera.rotate(Cesium.Cartesian3.UNIT_Z, -spinRate * delta); 
}); 
} 
+1

Solo una cronaca ho finalmente capito di lavoro. I ragazzi di Cesio hanno risposto. È venuto fuori che ho solo bisogno di usare semplici vecchi ascoltatori di eventi JS. Per qualsiasi motivo stavo scendendo nella tana di un coniglio nella documentazione dell'ascoltatore dell'evento di Cesio! Quindi tutto bene! Grazie! –

+1

Puoi essere più specifico, per favore? –

risposta

0
spinGlobe(dynamicRate){ 
    var previousTime = Date.now(); 

    this.viewer.scene.postRender.addEventListener(function (scene, time){ 
     var spinRate = dynamicRate; 
     var currentTime = Date.now(); 
     var delta = (currentTime - previousTime)/1000; 
     previousTime = currentTime; 
     this.viewer.scene.camera.rotate(Cesium.Cartesian3.UNIT_Z, -spinRate * delta); 
    }); 
}