如何在Cesium中停用onTick方法

时间:2015-10-07 15:07:03

标签: cesium

我遇到了onTick()方法的问题,我有两个按钮用于两种不同的情况,每一个我将加载单独的dataSource,就像Sandcastle上的czml.html示例一样。对于每个按钮,我对onTick()方法有两个不同的定义,当我们在特定时间到达时,做一些特定的事情。在重置方法中,我正在删除查看器的实体和dataSource,但我无法删除onTick方法实现。

当我运行我的代码时,默认按钮完全正常,但是当我按下其他按钮时,我提到的第一个按钮的所有条件也同时发生,它不会让我的第二个按钮onTick方法正确执行其工作。你知道我如何停用第一个onTick方法吗?

1 个答案:

答案 0 :(得分:1)

看看addEventListener文档,您会发现两种不同的方法来撤消添加事件监听器:一种是调用匹配的removeEventListener,另一种是保存从addEventListener返回值并稍后调用它。

以下是一些显示两种方式的代码。使用对您的代码更有意义的选项,但不要同时使用它们。

function onTickCallback(clock) {
    // ... do stuff with every tick ...
}

var unsubscribeTicks = viewer.clock.onTick.addEventListener(onTickCallback);

function unsubscribeOption1() {
    // One option is to call removeEventListener.  In this case, you
    // don't need to save "var unsubscribeTicks" at all, but you do
    // need a reference to the original onTickCallback.
    viewer.clock.onTick.removeEventListener(onTickCallback);
}

function unsubscribeOption2() {
    // The other option is to save the return value of addEventListener,
    // and later invoke it.  This could be a cleaner option if the
    // onTickCallback was declared anonymously inline.
    unsubscribeTicks();
}