Редактировать: здесь - это упрощенный JSFiddle.Слушатель событий находится в строке 60.
Я использую js и three.js для анимации движущихся семян одуванчика, и мне нужно остановить семя, если на него щелкнуть.Я добавляю прослушиватель событий к каждому семени, например, так:
for (var i = 0; i < seeds.length; i++) {
s=seeds[i];
domEvents.addEventListener(seeds[i].mesh, 'click', function(event){
s.clicked = true;
console.log('you clicked on the mesh');
$('#id01').modal('show');
}, false);
}
Проблема в том, что при щелчке по семени компьютер больше не знает, что такое "s" или "seed" [i], потому чтоцикл закончился.Если я вручную добавлю прослушиватель событий к каждому семени, то семена останавливаются правильно.Это неэффективно, однако.Это будет 19 блоков, с единственным изменением числа:
domEvents.addEventListener(seeds[1].mesh, 'click', function(event){
seeds[1].clicked = true;
$('#id01').modal('show');
}, false);
Мой код для остановки начального числа следующий:
if (s.clicked === true) {
console.log('hi');
s.mesh.position.x = s.currentX;
s.mesh.position.y = s.currentY;
} else { run the code that moves the seed
Код для остановки начального числаработает, но для неправильного семени.Он останавливается в зависимости от того, какое семя было добавлено в массив семян в последний раз.
См. Полный код здесь
Существует ли эффективный способ правильно добавить прослушиватель событий для каждого начального числа?Как я могу узнать индекс щелчкового семени?