0

我正在从 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”而不是输入正确的数字。有什么提示可以解决问题吗?

4

2 回答 2

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);          
于 2014-06-04T09:08:35.803 回答
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的回答

于 2014-08-06T09:31:33.680 回答