查找画布上单击的对象的索引

时间:2018-08-24 16:06:15

标签: javascript three.js mouseclick-event

编辑:here是简化的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

停止种子的代码有效,但是对于错误的种子。它将停止最后添加到种子数组的任何种子。

See the full code here

是否有一种有效的方法将事件侦听器正确添加到每个种子?我怎么知道点击种子的索引?

0 个答案:

没有答案