Как заставить спрайт cocos2d масштабироваться вверх и вниз (для пульсирующего эффекта) каждую секунду? - PullRequest
7 голосов
/ 06 июля 2010

Я хочу, чтобы спрайт увеличивался и уменьшался раз в секунду, чтобы казалось, что он выпуклый и пульсирующий. Как я могу это сделать?

Ответы [ 2 ]

14 голосов
/ 16 марта 2012

Как и в предыдущем посте, синтаксические ошибки.Если быть более точным, выкладываю рабочий код:

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]];
2 голосов
/ 06 июля 2010

Вы можете использовать простое действие [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];

это сообщение может содержать ошибки. но я надеюсь, что вы понимаете, как достичь цели.

...