2

抱歉,如果这是一个新手问题,但我刚刚开始使用 cocos2d-html,并且在创建带有图像的 ccmenu 时遇到了一些问题。这是我的代码:

var ActionLayer = cc.Layer.extend({
getTexture: function (name) {
return cc.TextureCache.getInstance()
.addImage('./images/' + name + '.png');
},
addObject: function (desc) {
var sprite = cc.Sprite.createWithTexture(this.getTexture(desc.name));

sprite.setAnchorPoint(desc.anchor || cc.p(0.5, 0.5));
        sprite.setScaleX(desc.scaleX || desc.scale || 1);
        sprite.setScaleY(desc.scaleY || desc.scale || 1);
        sprite.setRotation(desc.rotation || 0);
        sprite.setPosition(cc.p(desc.x || 0, desc.y || 0));
this.addChild(sprite, desc.z || 0);
        return sprite;
    },
    checkAnswer:function(){
        alert('yay');
    },
    init: function () {
        this._super();
        this.removeAllChildrenWithCleanup(true);
        this.setTouchEnabled(true);
var layer1 = cc.LayerColor.create(
            new cc.Color4B(00, 185, 214, 255), 1024, 768);
layer1.setPosition(new cc.Point(0.0,0.0));
        this.addChild(layer1,-2);
var director = cc.Director.getInstance(),
            self = this,
            winSize = director.getWinSize();
var bgSprite = this.addObject({
            name: "GenericBG",
            scaleY: 1,
            anchor: cc.p(0, 0),
            z: 0
});
var closeItem = cc.MenuItemImage.create('./images/sign.png','./images/sign.png',this,'checkAnswer');
closeItem.setAnchorPoint(cc.p(0.5, 0.5));
        var menu = cc.Menu.create(closeItem);
menu.setPosition(500,300);
        this.addChild(menu, 5);
    }
}); //end ActionLayer

//--------------------- Scene ---------------------

var ActionLayerScene = cc.Scene.extend({
onEnter: function () {
this._super();

var layer = new ActionLayer();
        layer.init();
this.addChild(layer);
    }
});

菜单显示在屏幕上,但是当我单击 menuitem 时,什么也没有发生 控制台上没有 javascript 错误,所以我真的不知道如何调试它。谢谢西里尔

4

2 回答 2

0

您的 cc.MenuItemImage.create() 参数错误。代替:

var closeItem = cc.MenuItemImage.create('./images/sign.png','./images/sign.png',this,'checkAnswer');

它应该是:

var closeItem = cc.MenuItemImage.create('./images/sign.png','./images/sign.png','checkAnswer', this);
于 2013-04-11T17:58:04.133 回答
0
for(var i=0; i<5; i++){
    var colorImg = cc.MenuItemImage.create(color_list[i], color_list[i], "colorAction", this);
    colorImg.setPosition(new cc.Point(40+i*70, 38));
    colorImg.tag = i+100; 
    this.colorImageArray.push(colorImg);
    colorMenu.addChild(colorImg);
}


colorAction:function(event)
{
    var colorTag = event.tag;
    switch(colorTag)
    {
        case 1:

                break;
        case 2:

                break;
        case 3:
                break;
    }
}
于 2013-09-04T11:45:55.423 回答