それが問題ですxD
IPhoneのcocos2dにあるCCSpriteのインスタンスがある場合、画像の幅と高さを取得するためにどのような方法を使用できますか?
CCSpriteクラスには、CGRectである境界ボックスプロパティがあります。
CCSprite *Sprite = [CCSprite spriteWithFile: @"file.png"];
int width = [Sprite boundingBox].size.width;
CCSpriteサブクラスに幅と高さのメソッドを追加しました。
-(CGFloat) width
{
return [self boundingBox].size.width;
}
-(CGFloat) height
{
return [self boundingBox].size.height;
}
生の幅:Sprite.contentSize.width
生の高さ:Sprite.contentSize.height
現在の幅:Sprite.contentSize.width * Sprite.scaleX
現在の高さ:Sprite.contentSize.height * Sprite.scaleY
Cocos2d-x v3.xでは、boundingBox
はNodeクラス(つまり、Spriteのスーパークラス)では廃止されています。代わりに次のコードを使用してください。
auto spriteWidth = Sprite->getTextureRect().size.width;
auto spriteHeight = Sprite->getTextureRect().size.height;
または
auto spriteWidth = Sprite->getContentSize().width;
auto spriteHeight = Sprite->getContentSize().height;
他の回答は不完全で古くなっています。
以下のJavaScriptを 破壊的な代入構文 と一緒に使用していることに注意してください。言語の実装については、必ず Cocos APIドキュメント を参照してください。
あなたに与える:
setScale()
がSpriteに適用された後のサイズ)。anchorPoint
は(0.5、0.5)ですが、この座標は(0、0)の位置を表しています。つまり、anchorPointがデフォルトで設定されている場合、getBoundingBox().x
+ getBoundingBox().width
/2 = getPosition().x
(setPosition()
)。例:
const boundingBox = Sprite.getBoundingBox();
const { x, y, width, height } = boundingBox;
あなたに与える:
例:
const contentSize = Sprite.getContentSize();
const { x, y } = contentSize;
あなたに与える:
例:
const textureRect = Sprite.getTextureRect();
const { x, y, width, height } = textureRect;
IN cocos2d-x
Sprite->boundingBox().size.width;
Sprite->boundingBox().size.height;