Нахождение индекса кликаемого объекта на холсте - PullRequest
0 голосов
/ 24 августа 2018

Редактировать: здесь - это упрощенный 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

Код для остановки начального числаработает, но для неправильного семени.Он останавливается в зависимости от того, какое семя было добавлено в массив семян в последний раз.

См. Полный код здесь

Существует ли эффективный способ правильно добавить прослушиватель событий для каждого начального числа?Как я могу узнать индекс щелчкового семени?

...