【问题标题】:Cesium WebGL Camera Rotate, How to Stop the RotationCesium WebGL 相机旋转,如何停止旋转
【发布时间】:2014-10-03 21:16:27
【问题描述】:

好的,第一次使用 Cesium。我有一个简单的非高级问题,我在他们的表格上发布了几次,但没有人回应。所以我想我会在这里尝试。

我需要做的就是在调用另一个事件之前弄清楚如何停止一个事件。这是正在发生的事情的一个例子。地球在用户连接上旋转,但如果他们点击“带我回家”等,我需要它停止。

代码如下。

所以 spinGlobe 中的 arg 是 spinRate。如果我在初始连接上传入 0.0,它就不会旋转。完美的。所以我认为如果点击事件(用户点击让我回家)然后调用 spinGlobe(0.0) 地球将停止旋转。但事实并非如此。我可以不动态更改 spinRate 吗?还是我做错了?

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

【问题讨论】:

  • 仅供参考,我终于让它工作了。 Cesium那边的人回应道。结果我只需要使用普通的旧 JS 事件侦听器。无论出于何种原因,我都在 Cesium 事件侦听器文档中陷入了困境!所以一切都很好!谢谢!
  • 你能说得更具体些吗?
  • @ScottJason:你能分享一下解决方案吗?我想了解更多

标签: javascript rotation cesium


【解决方案1】:
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);
    });
}

【讨论】:

  • 请告诉我如何停止旋转,因为我试图通过spinGlobe(0) 停止旋转,但这不起作用
猜你喜欢
  • 2022-11-13
  • 1970-01-01
  • 2016-09-22
  • 2013-03-30
  • 2014-02-19
  • 2012-03-27
  • 1970-01-01
  • 2012-08-08
  • 2012-05-31
相关资源
最近更新 更多