1

我试图找出一种基于事件(例如鼠标左键单击点击区域)来增加数组索引的方法。下面的代码将所有内容设置为零,并在单击鼠标时将相应的索引短暂更改为 1,但一旦释放鼠标,则更改回 0。我想要发生的是每次索引值增加时,它都会存储其当前值而不是切换到 0。到最后,数组应该是混合数字。任何人都可以提供和帮助吗?我在 Quartz Composer 环境中工作,但仍在 javascript 补丁中。

function (__structure out) main (__structure Pos, __boolean Left, __number X, 
          __number Y, __number W, __number H, __number ShiftX, __number ShiftY) {

    if (!_testMode) {
        len = Pos.length;
        Hits = new Array()
            for (i = 0; i < len; i++) {
                Hits[i] = 0 
            }
            for (j = 0; j < len; j++) {
                if (Pos[j][1] >= (X-(W/2)) && Pos[j][1] <= (X +(W/2)) && 
                    Pos[j][0] >= (Y-(H/2)) && Pos[j][0] <= (Y +(H/2)) && Left) { 
                Hits[j]++
                }
            }

    result = new Object();
    result.out = Hits;
    return result;
    }   
}
4

1 回答 1

1

我不知道 Quartz Composer,但我确实知道您的代码有什么问题。每次触发此事件时,您确实将数组中的所有值设置回 0。

因此,您应该将以下代码行从您的方法中取出并放到更全局的范围内(在当前类中或在真正的全局范围内)。

Hits = new Array()
for (i=0;i<len;i++){
    Hits[i] = 0
}

所以Hits应该是一个非本地数组,每个Hits[i]to的初始化0应该只做一次;在执行开始时。

于 2012-10-17T19:52:18.850 回答