web-dev-qa-db-fra.com

comment obtenir la largeur et la hauteur d'un CCSprite in cocos2d pour iphone

C'est la question xD

Avec une instance de CCSprite dans cocos2d dans iphone, quelle méthode puis-je utiliser pour obtenir la largeur et la hauteur de l'image?

29
Manuel Aráoz

La classe CCSprite a une propriété de boîte englobante qui est un CGRect:

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

J'ai ajouté des méthodes width et height à ma sous-classe CCSprite.

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

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

largeur brute:
Sprite.contentSize.width

hauteur brute:
Sprite.contentSize.height

largeur actuelle: Sprite.contentSize.width * Sprite.scaleX

hauteur actuelle: Sprite.contentSize.height * Sprite.scaleY

38
yubenyi

Dans cocos2d-x v3.x, boundingBox est déconseillé dans la classe Node (c’est-à-dire la super classe de Sprite ). Utilisez plutôt le code suivant:

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

ou

auto spriteWidth = Sprite->getContentSize().width;
auto spriteHeight = Sprite->getContentSize().height;
0
GaloisPlusPlus

Réponse pour 2018 (Cocos2d-x v3.x :)

Les autres réponses sont incomplètes et obsolètes.

Notez que j'utilise JavaScript ci-dessous avec la syntaxe d'attribution de déstructuration . Veillez à consulter la documentation de l'API Cocos pour votre implémentation linguistique. 


getBoundingBox ()

Vous donne le:

  • Taille mise à l'échelle (la taille après setScale() est appliquée à l'image-objet).
  • Coordonnées de Sprite à l'écran. Notez que la variable anchorPoint par défaut pour les sprites est (0.5, 0.5), tandis que cette coordonnée représente la position (0, 0). En d'autres termes, si anchorPoint est défini par défaut, alors getBoundingBox().x + getBoundingBox().width/2 = getPosition().x (la valeur x définie dans setPosition()).

Exemple:

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

getContentSize ()

Vous donne le:

  • Taille non mise à l'échelle.

Exemple:

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

getTextureRect ()

Vous donne le:

  • Taille non mise à l'échelle.
  • Coordonnées de Sprite sur la texture à partir de laquelle elle est extraite (c.-à-d. Feuille de Sprite)

Exemple:

const textureRect = Sprite.getTextureRect();
const { x, y, width, height } = textureRect;
0
jabacchetta

DANS cocos2d-x

Sprite->boundingBox().size.width;

Sprite->boundingBox().size.height;
0
Singhak