CCSprite 创建问题,求解答

方法一:
auto cache = Director::getInstance()->getTextureCache()->addImage(“test.png”);
auto pSprite = CCSprite::create();
pSprite->setTexture(cache);

方法二:
auto cache = Director::getInstance()->getTextureCache()->addImage(“test.png”);
auto pSprite = CCSprite::createWithTexture(cache);

为何方法一加载图片不成功?方法二可以正常加载

第一张方法的使用条件是图片先进行缓存后才可以读取,你如果只是单张图片不需要那样创建

第一种方法是简单的写法,实际中在异步加载资源成功后再进行pSprite->setTexture(cache) 操作,但是依然不成功,所有还是希望解答下原因,可以使用其他方法解决异步加载异常的问题,但是还是想知道原因是什么

问题已解决…修改了3.2版本的源码,希望cocos2d改进…

上面的方法1创建的过程未设置Texture2D的区域,解决方法

方法一:
pSprite->setTexture(cache); 后需要设置区域
Rect rect = Rect::ZERO;
rect.size = cache->getContentSize();
pSprite->setTextureRect(rect);

方法二:
找到void Sprite::setTexture(Texture2D *texture)函数实现,在函数尾部加上

Rect rect = Rect::ZERO;
rect.size = texture->getContentSize();
setTextureRect(rect);

推荐方法二,此方法一劳永逸