CCSprite设置了大小后,使用setScale出现了无法解释的现象

  • 本帖最后由 abcbuzhiming 于 2013-7-9 14:27 编辑 *

CCSprite* cSprite = CCSprite::create("testb.png");
cSprite->setContentSize(CCSize(50,50));   //定义精灵大小为50,50
cSprite->setScaleX(50/cSprite->getTextureRect().size.width);
cSprite->setScaleY(50/cSprite->getTextureRect().size.height);
cSprite->setPosition(ccp(this->getPosition().x + 25 + 10,this->getPosition().y + this->getContentSize().height - 25 - 10));
this->addChild(cSprite,1);

代码如上所示意,我的本意是想在界面上显示一个恒定大小为50x50的精灵,但是我发现,当使用的图片不是50x50,而是别的尺寸时,会出现以下的怪异现象
1161

如图示意,本来sprite的坐标被设置为距离背景CClayer左上角刚好35,35的位置,但是这图明显偏移了。

只有注释掉cSprite->setContentSize(CCSize(50,50));这行代码后,才能恢复正常
1162
正常情况的显示

如果图片本身大小就是50x50,那么不去掉这行代码显示也是正常的。

这让我觉得很奇怪,感觉好像是缩放时CCsprite内部的图片锚点和CCsprite本身的锚点不一致了