簡體   English   中英

KineticJS向數組中保存的對象添加事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM