2014-09-10 2 views
1

В принципе, я импортировал глобус WebGL и хочу, чтобы он переставал вращаться, когда я нажимаю на земной шар.Как преобразовать значения внутри функции onClick?

Вот моя попытка сделать его остановить:

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. Что это будет?

ответ

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

Спасибо, что сделал трюк! Синтаксис Javascript трудно ... –

+0

U r welcome !! да, особенно если вы исходите из таких языков, как python или ruby – rogelio

-1

Согласно http://www.webglearth.org/api, это должно быть earth.on('click', yourCallback());, а не .onclick. Кроме того, я бы рассмотрел некоторые изменения в вашем коде:

Прежде всего, не устанавливайте обработчик onclick в пределах функции setatimeout все время. Сделайте это один раз при иналинизации и используйте переменную вместо 0,9 внутри таймаута, чтобы u мог установить 0 внутри вашего обратного вызова onclick. В случае, если вы хотите, чтобы остановить анимацию навсегда, вы могли бы рассмотреть выхода из цикла SetTimeout в случае, если вы наткнулись на эту переменную будучи 0.

Im реализация скоро покинешь меня к вам

+0

Извинения заранее, еще собирание JS. I 1) добавлено 'var stopSpeed ​​= rotationspeed.replace (" 0.1 "," 0.0 ");' под 'initialize()' function, 2) добавлена ​​отдельная функция для вызова этой переменной 'function stopEarth() {earth.on ('click', stopSpeed ​​());} 'и 3) задает скорость переменной, то есть' var rotationspeed = 0.1; earth.setCenter ([c [0], c [1] + rotationspeed]); '. Будет ли это работать? –

Смежные вопросы