2010-07-06 9 views

risposta

2

È possibile utilizzare una semplice azione [CCScaleTo ..] o se si desidera creare il proprio "effetto" è possibile far avanzare CCFiniteTimeAction. Io preferirei la prima:

CCSprite * sprite = ...; // create the sprite. 
sprite.anchorPoint = ccp(0.5, 0.5); center the pivot 
id myAction = [CCRepeatForEver actionWithActions:[CCScaleTo actionWithDuration:0.5 scaleX:2.0 ScaleY:2.0],[CCScaleTo actionWithDuration:0.5 scaleX:0.5 ScaleY:0.5], nil]; 
[sprite runAction:myAction]; 

uso CCEase per rendere l'animazione non lineare

id myAction = [CCRepeatForEver actionWithActions:[CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:0.5 scaleX:2.0 ScaleY:2.0] rate:2.0],[CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:0.5 scaleX:0.5 ScaleY:0.5] rate:2.0], nil]; 

questo post possono contenere errori. ma spero che tu capisca il modo di venire all'obiettivo.

14

Poiché il post precedente contiene errori di sintassi. Per essere più precisi, inserisco il codice di lavoro:

CCSprite * sprite = ...; // create the sprite. 
id scaleUpAction = [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:1 scaleX:1.0 scaleY:1.0] rate:2.0]; 
id scaleDownAction = [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:0.5 scaleX:0.8 scaleY:0.8] rate:2.0]; 
CCSequence *scaleSeq = [CCSequence actions:scaleUpAction, scaleDownAction, nil]; 
[sprite runAction:[CCRepeatForever actionWithAction:scaleSeq]]; 
+0

come eseguire questa animazione solo una volta? – Swastik

Problemi correlati