2012-03-14 13 views
7

Jaka jest najlepsza technika do skalowania ikonki do dokładnego rozmiaru. Właściwość scale jest mnożnikiem, ale jeśli chcesz, aby duszek miał dokładnie X pikseli szerokości, czy istnieje prosta technika? A może wymagałoby to po prostu użycia wymaganego rozmiaru i ikonek rzeczywistych contentsize do obliczenia koniecznej operacji scale?Skala CCSprite do dokładnej wielkości

+0

Szczerze mówiąc, nie zawsze przebiegała zgodnie z sugestią (obliczyć scaleX i scaleY) nie szuka innej odpowiedzi. Dodam to pytanie jako faworyt, zobacz, co naukowcy wyłudzają jako odpowiedź. – YvesLeBorg

+1

Obliczanie mnożnika skali przy użyciu nowego rozmiaru i bieżącego rozmiaru jest jedyną drogą do przejścia (lub zawsze możesz stworzyć dla tego metodę), ponieważ wewnętrznie, cocos2d po prostu przesyła wartości 'scaleX' i' scaleY' do funkcji 'glScalef' openGL, gdy czas narysować sprite'a. – Lukman

Odpowiedz

19

Wierzę, że to działa:

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

umieścić go w grze, i używać tak:

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

Możesz użyć tych dwóch właściwości: scaleX i scaleY. na przykład użyj w pasku HP.

hpBarSprite.scaleX = hpCurrent/hpMax;

+0

Myślę, że masz na myśli max/current, prawda? – johnbakers

+0

Dla paska powinien to być '((1.0/max) * current)' ponieważ 1.0 wynosi 100%. – Voldemort