2010-07-06 122 views

回答

2

你可以使用一个简单的[CCScaleTo ..]动作,或者如果你想创建自己的“效果”,你可以提前CCFiniteTimeAction。我宁愿第一个:

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]; 

使用CCEase使动画非线性

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]; 

这个职位可能包含错误。但我希望你能理解实现这一目标的方式。

14

由于之前的帖子包含语法错误。更精确地说,我发表的工作代码:

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

如何只给这个动画一次? – Swastik 2013-01-24 06:31:04