如何在函数内转换值?

时间:2014-09-10 02:38:36

标签: javascript onclick webgl

基本上,我已经导入了一个WebGL地球仪,并希望在我点击地球时停止旋转。

我试图让它停止:

    setInterval(function() {
        var c = earth.getPosition();
        earth.setCenter([c[0], c[1] + 0.9]);
        earth.onclick.setCenter({c[0], c[1]);
    }, 50);

基本上我想摆脱+0.9 onClick。如果有帮助,还可以在下面添加带有地球对象的功能:

<script src="http://www.webglearth.com/v2/api.js"></script>
<script>
function initialize() {
    var options = {atmosphere: true, center: [0, 0], zoom: 0};
    var earth = new WE.map('earth_div', options);
    WE.tileLayer('http://otile{s}.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.jpg', {
        subdomains: '1234',
        attribution: 'Tiles Courtesy of MapQuest'
    }).addTo(earth);
</script>

我猜测我的语法与.onclick无关。应该是什么呢?

2 个答案:

答案 0 :(得分:0)

检查webglearth上的示例,onClick定义为:

earth.on('click', callback)

所以你需要将回调函数定义为:

callback = function(){···}

或简称:

earth.on('click', function(e){···});

如果您需要停止动画,则必须在clearInterval事件

上使用onClick
var interval = setInterval(function() {
    var c = earth.getPosition();
    earth.setCenter([c[0], c[1] + 0.9]);
}, 50);
···
earth.on('click', function(){
    clearInterval(interval);
});

答案 1 :(得分:-1)

根据http://www.webglearth.org/api,它应该是earth.on('click', yourCallback());,而不是.onclick。另外,我会考虑对您的代码进行一些更改:

首先,不要一直在setatimeout函数中设置onclick处理程序。在初始化时做一次,并在超时内使用变量而不是0.9,你可以在你的onclick回调中设置为0。如果你想永远停止动画,你可以考虑突破setTimeout循环,以防你偶然发现该变量为0。

我要把实施留给你