Cocos2d-JS 3.0迁移

时间:2014-06-04 08:10:04

标签: javascript cocos2d-iphone cocos2d-html5 cocos2d-js

我正在从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”而不是输入正确的数字。 有没有解决问题的小费?

2 个答案:

答案 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的回答