我正在从cocos2d-html5 2.2迁移到cocos2d-js 3.0,我对此代码有疑问(在2.2版中完美运行):
menuButtons = cc.Menu.create();
for (var a = 1; a < 6; a++){
var label = cc.LabelTTF.create("BUTTON " + a, "Arial", 20);
var tmpBtn = cc.MenuItemLabel.create(label, function (e) {
cc.log("TEST TAG: " + e.tag);
//StartSomethingOther(e);
}, this);
tmpBtn.setPosition(50, a * 30);
tmpBtn.tag = a;
menuButtons.addChild(tmpBtn,2,1);
}
menuButtons.setPosition(10, 10);
this.addChild(menuButtons, 1);
按下任何“按钮”,控制台始终输出“TEST TAG:1”而不是输入正确的数字。 有没有解决问题的小费?
答案 0 :(得分:1)
使用.title或更好的['data-']标识符更改.tag,如下例所示:
menuButtons = cc.Menu.create();
for (var a = 1; a < 6; a++){
var label = cc.LabelTTF.create("BUTTON " + a, "Arial", 20);
var tmpBtn = cc.MenuItemLabel.create(label, function (e) {
cc.log("TEST TAG: " + e['data-tag']);
//StartSomethingOther(e);
}, this);
tmpBtn.setPosition(50, a * 30);
tmpBtn['data-tag'] = a;
menuButtons.addChild(tmpBtn,2,1);
}
menuButtons.setPosition(10, 10);
this.addChild(menuButtons, 1);
答案 1 :(得分:0)
您在此处覆盖tag
媒体资源:
menuButtons.addChild(tmpBtn,2,1);
第三个参数将tmpBtn.tag
设置为1。
如果您想继续使用tag
属性,只需更改:
tmpBtn.tag = a;
menuButtons.addChild(tmpBtn,2,1);
使用:
menuButtons.addChild(tmpBtn,2,a);
如果您不想使用tag
媒体资源,请参阅Francesco的回答