动态设置button的frame怎么不起作用呢

1.5版本,动态设置button的normal/press/hover状态的spriteFrame怎么不起作用呢?图片不显示,代码如下:

  this.yesSprite=this.yesBtn.getComponent(cc.Sprite);
  this.noSprite=this.noBtn.getComponent(cc.Sprite);

cc.loader.loadRes(“atlas/select”, cc.SpriteAtlas, function (err, atlas) {
console.log(‘answerButtonsLoad called’);
var yes0=atlas.getSpriteFrame(‘yes0_shi’);
var yes1=atlas.getSpriteFrame(‘yes1_shi’);
var no0=atlas.getSpriteFrame(‘no0_shi’);
var no1=atlas.getSpriteFrame(‘no1_shi’);
//self.yesSprite.spriteFrame=yes0;
self.yesBtn.normalSprite = yes0;
self.yesBtn.pressSprite = yes1;
self.yesBtn.hoverSprite = yes1;
//
//self.noSprite.spriteFrame=no0;
self.noBtn.normalSprite = no0;
self.noBtn.pressSprite = no1;
self.noBtn.hoverSprite = no1;
});

demo.zip (506.8 KB)

最好提供一个 demo,谢谢。

已经提供demo。creator更新到1.5.2版本了。

 onLoad: function () {
      this.yesBtn=this.node.getChildByName('yes');
      this.noBtn=this.node.getChildByName('no');
      this.yesSprite=this.yesBtn.getComponent(cc.Sprite);
      this.noSprite=this.noBtn.getComponent(cc.Sprite);
      var name='shi';
      var self=this;
       cc.loader.loadRes("atlas/select", cc.SpriteAtlas, function (err, atlas) {
            var yes0=atlas.getSpriteFrame('yes0_'+name);
            var yes1=atlas.getSpriteFrame('yes1_'+name);
            var no0=atlas.getSpriteFrame('no0_'+name);
            var no1=atlas.getSpriteFrame('no1_'+name);
            //self.yesSprite.spriteFrame=yes0;//
            self.yesBtn.getComponent(cc.Button).normalSprite = yes0;
            self.yesBtn.getComponent(cc.Button).pressSprite = yes1;
            self.yesBtn.getComponent(cc.Button).hoverSprite = yes1;
            //
            //self.noSprite.spriteFrame=no0;//
            self.noBtn.getComponent(cc.Button).normalSprite = no0;
            self.noBtn.getComponent(cc.Button).pressSprite = no1;
            self.noBtn.getComponent(cc.Button).hoverSprite = no1;
        });
    },

你需要设置的是Button组件的属性而不是 Node的。

注意区别。

1赞

多谢啊:)
现在可以啦。
自己没看出来。