2012-03-14 11 views
7

Qual è la tecnica migliore per ridimensionare uno sprite con una dimensione esatta. La proprietà della scala è un moltiplicatore, ma se vuoi che uno sprite sia esattamente X pixel di larghezza, esiste una tecnica semplice? Oppure, richiederebbe semplicemente l'utilizzo della dimensione desiderata e degli sprite effettivi contentsize per calcolare l'operazione scale necessaria?Scala CCSprite alla dimensione esatta

+0

Onestamente, ho sempre proceduto come per il vostro suggerimento (calcolare scaleX e scaleY), non cercando un'altra risposta Mi limiterò a aggiungere questa domanda come una delle preferite, vedere che cosa gli scienziati hanno preparato come risposta. – YvesLeBorg

+1

Calcolare il moltiplicatore di scala usando la nuova dimensione e la dimensione corrente è l'unico modo per andare (oppure puoi sempre creare un metodo per quello) perché internamente, cocos2d invia semplicemente i valori di 'scaleX' e' scaleY' alla funzione openGL 'glScalef' quando è il momento di disegnare lo sprite. – Lukman

risposta

19

Credo che questo funziona:

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

metterlo in gioco, e utilizzare in questo modo:

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

È possibile utilizzare queste due proprietà: scalaX e scalaY. ad esempio, utilizzare in una barra HP.

hpBarSprite.scaleX = hpCurrent/hpMax;

+0

penso che tu intenda max/corrente, giusto? – johnbakers

+0

Per una barra, dovrebbe essere '((1.0/max) * corrente)' poiché 1.0 è 100%. – Voldemort

Problemi correlati