2012-03-14 27 views
7

¿Cuál es la mejor técnica para escalar un sprite a un tamaño exacto. La propiedad de escala es un multiplicador, pero si quieres que un sprite tenga exactamente X píxeles de ancho, ¿hay una técnica simple? O, ¿requeriría simplemente usar el tamaño deseado y los sprites reales contentsize para calcular la operación necesaria scale?Escala CCSprite al tamaño exacto

+0

Honestamente, siempre he procedido como por su sugerencia (calcular scaleX y scaleY), no buscando otra respuesta. Añadiré esta pregunta como favorita, veré lo que los científicos buscaron como respuesta. – YvesLeBorg

+1

Cálculo del multiplicador de escala usando tamaño nuevo y tamaño actual es la única manera de hacerlo (o siempre puede crear un método para eso) porque internamente, cocos2d simplemente envía los valores 'scaleX' y' scaleY' a la función 'glScalef' openGL cuando es hora de dibujar el sprite. – Lukman

Respuesta

19

Creo que esto funciona:

-(void)resizeSprite:(CCSprite*)sprite toWidth:(float)width toHeight:(float)height { 
    sprite.scaleX = width/sprite.contentSize.width; 
    sprite.scaleY = height/sprite.contentSize.height; 
} 

ponerlo en su juego, y utilizar así:

[self resizeSprite:mySprite toWidth:350 toHeight:400]; 
0

Puede usar estas dos propiedades: scaleX y scaleY. por ejemplo, use en una barra de HP.

hpBarSprite.scaleX = hpCurrent/hpMax;

+0

creo que quieres decir max/current, ¿no? – johnbakers

+0

Para una barra, debería ser '((1.0/max) * current)' ya que 1.0 es 100%. – Voldemort

Cuestiones relacionadas