我用这段代码交换精灵内容:
mySprite->setTexture(Director::getInstance()->getTextureCache()->addImage("newImage.png"));
问题是newImage.png
远小于精灵的旧内容图像。但是cocos2d-x将newImage.png
缩放为与oldImage.png
具有相同的大小。我如何防止这种扩展。我需要newImage.png
作为它的自然大小,但是要出现在oldImage.png
的坐标中(我想保留相同的精灵对象,只要我有一个指针在它上面,同样的位置和相同的锚点。这就是为什么我只使用setTexture
来改变图像。)
答案 0 :(得分:0)
嗯,这可能不是最干净的方式,但对我来说似乎是最困难的:
Sprite *newSprite = Sprite::create("newImage.png");
newSprite->setAnchorPoint(mySprite->getAnchorPoint());
newSprite->setPosition(mySprite->getPosition());
mySprite->removeFormParentAndCleanup(true);
mySprite = newSprite; // <-- magic happens here
所以基本上你创建一个新的精灵,把它放在旧的精灵位置/锚点上,然后在删除旧精灵之后,你将mySprite
变量指定为与newSprite
相同的位置。
答案 1 :(得分:0)
mySprite->setTexture("newImage.png");
这也设置了内容Rect。