Как получить ширину и высоту CCSprite в cocos2d для iphone
Вот и вопрос xD
Принимая во внимание экземпляр CCSprite в cocos2d в iphone, какой метод я могу использовать для получения ширины и высоты изображения?
5 ответов
Класс 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;
IN cocos2d-x
sprite->boundingBox().size.width;
sprite->boundingBox().size.height;
Ответ за 2018 год (Cocos2d-x v3.x:)
Другие ответы являются неполными и устаревшими.
Обратите внимание, что я использую JavaScript ниже вместе с деструктурирующим синтаксисом присваивания. Обязательно посмотрите документацию Cocos API для вашей языковой реализации.
getBoundingBox ()
Дает вам:
- Масштабированный размер (размер после
setScale()
применяется к спрайту). - Координаты спрайта на экране. Обратите внимание, что по умолчанию
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;
getContentSize ()
Дает вам:
- Немасштабированный размер
Пример:
const contentSize = sprite.getContentSize();
const { x, y } = contentSize;
getTextureRect ()
Дает вам:
- Немасштабированный размер
- Координаты спрайта на текстуре, из которой он извлечен (т. Е. Лист спрайта)
Пример:
const textureRect = sprite.getTextureRect();
const { x, y, width, height } = textureRect;