在cocos2d-x 3中交换精灵内容

时间:2014-06-29 19:18:39

标签: c++ cocos2d-x cocos2d-x-3.0

我用这段代码交换精灵内容:

mySprite->setTexture(Director::getInstance()->getTextureCache()->addImage("newImage.png"));

问题是newImage.png远小于精灵的旧内容图像。但是cocos2d-x将newImage.png缩放为与oldImage.png具有相同的大小。我如何防止这种扩展。我需要newImage.png作为它的自然大小,但是要出现在oldImage.png的坐标中(我想保留相同的精灵对象,只要我有一个指针在它上面,同样的位置和相同的锚点。这就是为什么我只使用setTexture来改变图像。)

2 个答案:

答案 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。