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
deanchorPoint
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, entoncesgetBoundingBox().x
+getBoundingBox().width
/ 2 =getPosition().x
(el valor de x que estableció ensetPosition()
).
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