すぐ忘れるのでメモ代わりにまとています。
Cocos2d-xで、Spriteに対してサイズ変更するときに、setContentSize(), setScale()各々を実行した時の挙動の違いは以下の通りで。
まず、100x100pxの大きさの画像を読み込む。
Sprite* sp = Sprite::create("100x100.png");
setContentSize()で2倍の大きさを指定する。
この時はSizeは指定した通りの値になって拡大率1倍
sp->setContentSize(sp->getContentSize() * 2); Size size = sp->getContentSize(); CCLOG("(%f, %f) * %f", size.width, size.height, sp->getScale()); // > (200.000000, 200.000000) * 1.000000 Size size = node->getBoundingBox().size; CCLOG("(%f, %f)", size.width, size.height); // > (200.000000, 200.000000)
画像は2倍の大きさで表示されて、getScaleは当然、1
次に、setScale()で2倍の大きさを指定
以下の場合、Sizeは元のままで拡大率が2倍というデータ管理になってるみたい
sp->setScale(2.0f); Size size = sp->getContentSize(); CCLOG("(%f, %f) * %f", size.width, size.height, sp->getScale()); // > (100.000000, 100.000000) * 2.000000 Size size = node->getBoundingBox().size; CCLOG("(%f, %f)", size.width, size.height); // > (200.000000, 200.000000)
いずれの場合も、getBoundingBox()は見かけ上の大きさで取得できる