用循环遍历一组节点绑定click事件,将index作为参数传入,但运行时点击所有节点触发事件时的参数都相同,谁帮忙看下?
下面的代码运行时输出:
Simulator: register click 0 答案1
Simulator: register click 1 答案2
Simulator: register click 2 答案3
但点击对应的按钮时log里的 onItemClicked 都是2,也就是最后一个按钮的事件。
properties: {
items: [cc.Node],
},
onLoad: function () {
for (var itemIdx in this.items) {
var item = this.items[itemIdx];
cc.log("register click", itemIdx, item.name);
var button = item.addComponent(cc.Button);
button.transition = cc.Button.Transition.SCALE;
item.on('click', function (event) {
cc.log("target", event.detail.name);
cc.log("itemIdx", itemIdx);
this.onItemClicked(itemIdx);
}, this);
}
},
onItemClicked: function(idx) {
cc.log("onItemClicked", idx);
},
我尝试过将事件回调里的
item.on('click', function (event) {
cc.log("target", event.detail.name);
cc.log("itemIdx", itemIdx);
this.onItemClicked(itemIdx);
}, this);
换成
var id = itemIdx;
item.on('click', function (event) {
cc.log("target", event.detail.name);
cc.log("itemIdx", id);
this.onItemClicked(id);
}, this);
但是还是一样不对,对js的闭包机制不太懂。。。
