大致流程这样:
目的是修改原有sprite的数据,使得sprite的纹理发生改变
1、有一个SpriteA;
根据SpriteA的数据重新创建了一个Texture;
2、然后再对SpriteA进行操作: SpriteA->setTexture(Texture);
SpriteA不显示了。
3、然后生成了一下SpriteB: CCSprite::spriteWithTexture(Texture)
SpriteB显示正常,说明Texture有效。
4、对SpriteA做这样的操作:
CCSprite* SpriteB= CCSprite::spriteWithTexture(Texture);
*SpriteA= *SpriteB;
SpriteA->getTexture()->retain();
delete SpriteB;
SpriteB = NULL;
5、SpriteA显示正常,为预期效果。
那么问题是:1、为什么第二步之后,SpriteA不显示了? 2、第四步可行,理解没错的话是进行了一次深拷贝,但是第四步会有内存泄露,为什么呢? 第四步这样的写法有什么问题?
求大神们能够解释下下:904:
