[英]KineticJS Adding Events to Objects held in an Array
for (var x = 0; x < 10; x++) {
//var xx = x;
for (var y = 0; y < 10; y++) {
//var yy = y;
displayboxs[x][y][1].on('click', function() {
displayboxs[x][y][0] = 'P';
});
}
}
所以這是我要運行的代碼,但是displaboxs [x] [y] [0] ='P'; 部分給出了錯誤。 我發現嘗試以我嘗試的方式更改任何數組都行不通,但是不幸的是,這是我可以做到的唯一方法,除非我手動添加每個事件(我寧願不這樣做)。 我還發現通過將x和y變量存儲在另一個變量中,我可以防止錯誤(注釋掉的代碼部分顯示了此錯誤),但是我得到了奇怪的結果。 例如,如果我在更改后打印右更改的數組區域,它將是“ P”,但是在將數組上的許多位置更改為“ P”並打印整個數組后,所有元素仍將被設置默認顯示數組中的最后一個點為“ P”。 對嗎? 所有建議表示贊賞!!! 感謝您的閱讀。
一個問題是,當觸發任何單擊時,x,y會超出范圍。
通過為每個顯示框[x] [y] [1]提供對顯示框[x] [y] [0]的引用,以使其在單擊時發生變化來進行重構。
像這樣(警告...未經調試的代碼!):
for (var x = 0; x < 10; x++) {
for (var y = 0; y < 10; y++) {
displayboxs[x][y][1].on('click', function() {
this.myZero = 'P';
});
(displayboxs[x][y][1]).myZero=displayboxs[x][y][0];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.