使用同一张图片创建多个精灵然后改变一个精灵的贴图遇到问题

###问题如下
####比如有个好友列表,头像都使用同一张图片作为默认图,后面从网络下载好a好友的图片,a调用a.spriteFrame.setTexture(tex)更改贴图, 然后问题来了,所有头像都跟着a变了!!!请问开发人员怎么破?貌似同一张图片就是全局的一个SpriteFrame。

是的,你需要:

var spriteFrame = new cc.SpriteFrame();
spriteFrame.setTexture(tex);
a.spriteFrame = spriteFrame;

new cc.SpriteFrame()的时候,引擎会显示一个warning,1.3.0版本可以无视这个warning。如果想暂时屏蔽这个warning,可以:

var ccWarn = cc.warn;
// 创建前临时把cc.warn变成空函数
cc.warn = function(){};
var spriteFrame = new cc.SpriteFrame();
// 创建后恢复
cc.warn = ccWarn;
......

@pandamicro 请问1.3.0正式版会去掉这个Warning吗?我试了下beta8还存在。

这样不行,如果节点当前active=false,执行a.spriteFrame = new cc.SpriteFrame()后,然后节点active改成true并执行动画会崩溃,报错reference count can not 0!

如果是1.2.2及以的版本,且使用的是JSB,在创建spriteFrame后要手动retain()一次,并在合适的时候release()。参见:
http://forum.cocos.com/t/topic/39665/2