如何在iphone的cocos2d中获取CCSprite的宽度和高度

时间:2010-03-23 21:53:25

标签: iphone sprite dimensions ccsprite

这就是问题xD

在iphone的cocos2d中给出一个CCSprite的实例,我可以用什么方法来获取图像的宽度和高度?

5 个答案:

答案 0 :(得分:53)

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

答案 1 :(得分:38)

原始宽度:
sprite.contentSize.width

原始高度:
sprite.contentSize.height

当前宽度: sprite.contentSize.width * sprite.scaleX

当前身高: sprite.contentSize.height * sprite.scaleY

答案 2 :(得分:0)

IN cocos2d-x

sprite->boundingBox().size.width;

sprite->boundingBox().size.height;

答案 3 :(得分:0)

在cocos2d-x v3.x中, Node 类(即 Sprite 的超类)中不推荐使用boundingBox。请改用以下代码:

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

auto spriteWidth = sprite->getContentSize().width;
auto spriteHeight = sprite->getContentSize().height;

答案 4 :(得分:0)

2018答案(Cocos2d-x v3.x:)

其他答案不完整且已过时。

请注意,我在下面使用JavaScript和destructuring assignment syntax。请务必查看Cocos API documentation以了解您的语言实施情况。

getBoundingBox()

给你:

  • 缩放尺寸(setScale()应用于精灵后的尺寸)。
  • 屏幕上的精灵坐标。请注意,精灵的默认anchorPoint是(0.5,0.5),而此坐标表示(0,0)位置。换句话说,如果anchorPoint设置为默认值,那么getBoundingBox().x + getBoundingBox().width / 2 = getPosition().x(您在setPosition()中设置的x值)。

示例:

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;