web-dev-qa-db-ja.com

iPhone用のcocos2dでCCSpriteの幅と高さを取得する方法

それが問題ですxD

IPhoneのcocos2dにあるCCSpriteのインスタンスがある場合、画像の幅と高さを取得するためにどのような方法を使用できますか?

29
Manuel Aráoz

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;
}
53
robterrell

生の幅:
Sprite.contentSize.width

生の高さ:
Sprite.contentSize.height

現在の幅:Sprite.contentSize.width * Sprite.scaleX

現在の高さ:Sprite.contentSize.height * Sprite.scaleY

38
yubenyi

Cocos2d-x v3.xでは、boundingBoxNodeクラス(つまり、Spriteのスーパークラス)では廃止されています。代わりに次のコードを使用してください。

auto spriteWidth = Sprite->getTextureRect().size.width;
auto spriteHeight = Sprite->getTextureRect().size.height;

または

auto spriteWidth = Sprite->getContentSize().width;
auto spriteHeight = Sprite->getContentSize().height;
0
GaloisPlusPlus

2018年の回答(Cocos2d-x v3.x :)

他の回答は不完全で古くなっています。

以下のJavaScriptを 破壊的な代入構文 と一緒に使用していることに注意してください。言語の実装については、必ず Cocos APIドキュメント を参照してください。


getBoundingBox()

あなたに与える:

  • スケーリングされたサイズ(setScale()がSpriteに適用された後のサイズ)。
  • 画面上のスプライトの座標。スプライトのデフォルトのanchorPointは(0.5、0.5)ですが、この座標は(0、0)の位置を表しています。つまり、anchorPointがデフォルトで設定されている場合、getBoundingBox().x + getBoundingBox().width/2 = getPosition().xsetPosition())。

例:

const boundingBox = Sprite.getBoundingBox();
const { x, y, width, height } = boundingBox;

getContentSize()

あなたに与える:

  • スケーリングされていないサイズ。

例:

const contentSize = Sprite.getContentSize();
const { x, y } = contentSize;

getTextureRect()

あなたに与える:

  • スケーリングされていないサイズ。
  • 抽出元のテクスチャ(スプライトシート)上のスプライトの座標

例:

const textureRect = Sprite.getTextureRect();
const { x, y, width, height } = textureRect;
0
jabacchetta

IN cocos2d-x

Sprite->boundingBox().size.width;

Sprite->boundingBox().size.height;
0
Singhak