iphone sprite dimensions ccsprite

Cómo obtener el ancho y la altura de un CCSprite en cocos2d para iphone



dimensions (5)

Esa es la pregunta xD

Dada una instancia de CCSprite en cocos2d en iphone, ¿qué método puedo usar para obtener el ancho y alto de la imagen?


Respuesta para 2018 (Cocos2d-x v3.x :)

Las otras respuestas están incompletas y desactualizadas.

Tenga en cuenta que estoy usando JavaScript a continuación junto con la sintaxis de asignación de desestructuración Asegúrese de ver la documentación de la API de Cocos para la implementación de su idioma.

getBoundingBox ()

Te da la

  • Tamaño escalado (el tamaño después de setScale() se aplica al sprite).
  • Coordenadas del sprite en la pantalla. Tenga en cuenta que el anchorPoint de anchorPoint predeterminado para sprites es (0.5, 0.5), mientras que esta coordenada representa la posición (0, 0). En otras palabras, si anchorPoint se establece en el valor predeterminado, entonces getBoundingBox().x + getBoundingBox().width / 2 = getPosition().x (el valor de x que estableció en setPosition() ).

Ejemplo:

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

getContentSize ()

Te da la

  • Tamaño sin escala.

Ejemplo:

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

getTextureRect ()

Te da la

  • Tamaño sin escala.
  • Coordenadas de sprite en la textura de la que se extrae (es decir, hoja de sprite)

Ejemplo:

const textureRect = sprite.getTextureRect(); const { x, y, width, height } = textureRect;


En cocos2d-x

sprite->boundingBox().size.width; sprite->boundingBox().size.height;


En cocos2d-x v3.x, boundingBox está en desuso en la clase Node (es decir, la súper clase de Sprite ). Utilice el siguiente código en su lugar:

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

o

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


La clase CCSprite tiene una propiedad de cuadro delimitador que es un CGRect:

CCSprite *sprite = [CCSprite spriteWithFile: @"file.png"]; int width = [sprite boundingBox].size.width;

Agregué métodos de ancho y alto a mi subclase CCSprite.

-(CGFloat) width { return [self boundingBox].size.width; } -(CGFloat) height { return [self boundingBox].size.height; }


ancho en bruto
sprite.contentSize.width

Altura en bruto:
sprite.contentSize.height

ancho actual: sprite.contentSize.width * sprite.scaleX

altura actual: sprite.contentSize.height * sprite.scaleY