30

这就是问题xD

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

4

5 回答 5

54

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;
}
于 2010-03-31T11:59:58.363 回答
39

原始宽度:
sprite.contentSize.width

原始身高:
sprite.contentSize.height

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

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

于 2010-04-14T08:55:29.387 回答
0

在 cocos2d-x

sprite->boundingBox().size.width;

sprite->boundingBox().size.height;
于 2013-11-11T11:43:35.780 回答
0

在 cocos2d-x v3.x 中,Node类(即SpriteboundingBox的超类)中已弃用。请改用以下代码:

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

或者

auto spriteWidth = sprite->getContentSize().width;
auto spriteHeight = sprite->getContentSize().height;
于 2014-08-01T08:04:49.743 回答
0

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

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

请注意,我在下面使用 JavaScript 以及解构赋值语法。请务必查看您的语言实现的Cocos API 文档


获取边界框()

为您提供:

  • 缩放后的大小(setScale()应用到精灵之后的大小)。
  • 屏幕上精灵的坐标。请注意,anchorPoint精灵的默认值为 (0.5, 0.5),而此坐标表示 (0, 0) 位置。换句话说,如果anchorPoint设置为默认值,那么getBoundingBox().x+ getBoundingBox().width/ 2 = getPosition().x(你设置的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;
于 2018-01-04T17:29:03.197 回答