我遇到了onTick()
方法的问题,我有两个按钮用于两种不同的情况,每一个我将加载单独的dataSource,就像Sandcastle上的czml.html
示例一样。对于每个按钮,我对onTick()
方法有两个不同的定义,当我们在特定时间到达时,做一些特定的事情。在重置方法中,我正在删除查看器的实体和dataSource,但我无法删除onTick
方法实现。
当我运行我的代码时,默认按钮完全正常,但是当我按下其他按钮时,我提到的第一个按钮的所有条件也同时发生,它不会让我的第二个按钮onTick
方法正确执行其工作。你知道我如何停用第一个onTick
方法吗?
答案 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();
}