我希望克隆Candy Crush Saga中找到的按鈕動畫效果。 而且我也想知道如何做這樣的流體&美麗的動畫。 Cocos2d-iPhone可以嗎?在cocos2d中實現動畫按鈕
這是糖果粉碎聖人的鏈接:
http://www.youtube.com/watch?v=KAMUWIqYN24
是它使用的圖像序列做了什麼?
我希望克隆Candy Crush Saga中找到的按鈕動畫效果。 而且我也想知道如何做這樣的流體&美麗的動畫。 Cocos2d-iPhone可以嗎?在cocos2d中實現動畫按鈕
這是糖果粉碎聖人的鏈接:
http://www.youtube.com/watch?v=KAMUWIqYN24
是它使用的圖像序列做了什麼?
這是可能的。只需在普通精靈按鈕上運行動畫。
GTAnimSprite *frame_normal = [GTAnimSprite spriteWithFile:@"play_button_normal.png"];
GTAnimSprite *frame_sel = [GTAnimSprite spriteWithFile:@"play_button_selected.png"];
frame_sel.color = ccc3(128,128,128);
CCMenuItemSprite *plyBtn = [CCMenuItemSprite itemWithNormalSprite:frame_normal
selectedSprite:frame_sel
target:self
selector:@selector(playBtnPress:) ];
plyBtn.position = ccp(size.width*0.77f, size.height*0.1f);
CCMenu *menu2 = [CCMenu menuWithItems:plyBtn, nil];
menu2.position = ccp(0.0f,0.0f);
[self addChild:menu2 z:2 ];
//下面是類文件:GTAnimSprite.h
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface GTAnimSprite : CCSprite
{
bool bouncing;
float counter;
}
@end
//下面是類文件:GTAnimSprite.mm
#import "GTAnimSprite.h"
@implementation GTAnimSprite
-(void)onEnter
{
[super onEnter];
counter = 0.0f;
bouncing = true;
[self scheduleUpdate];
}
-(void)update:(ccTime)dt
{
if (bouncing)
{
counter += dt;
self.scaleX = ((sin(counter*10) + 1)/2.0 * 0.1 + 1);
self.scaleY = ((cos(counter*10) + 1)/2.0 * 0.1 + 1);
if (counter > M_PI*10){
counter = 0;
}
}
}
-(void)onExit
{
[self unscheduleUpdate];
[super onExit];
}
@end
這裏是XCODE樣品來源:https://www.box.com/s/52i4xyznetyyc329evcu
這就是我如何做到這一點荷蘭國際集團CCActions
首先,我定義了CCAction:
id scaleHorDown = [CCScaleTo actionWithDuration:duration * 5/30.f scaleX:0.75f scaleY:1.0f];
id scaleHorBouncing = [CCEaseBounceIn actionWithAction:scaleHorDown];
id scaleVerDown = [CCScaleTo actionWithDuration:duration * 5/30.f scaleX:1.0f scaleY:0.65f];
id scaleVerBouncing = [CCEaseBounceInOut actionWithAction:scaleVerDown];
id shrink = [CCSequence actions:scaleHorBouncing,scaleVerBouncing, nil];
id swell = [CCScaleTo actionWithDuration: duration * 15/30.f scale:1.10f];
id swellEase = [CCEaseElasticOut actionWithAction:swell];
id resetScale = [CCScaleTo actionWithDuration:duration * 5/30.f scale:1.0f];
id resetScaleBouncing = [CCEaseInOut actionWithAction:resetScale];
id buttonAction = [CCSequence actions: shrink, swellEase, resetScaleBouncing, nil];
然後我跑過來想要的精靈動畫時CCMenuItem初始化
CCMenuItem aMenuItem = [CCMenuItemSprite itemFromNormalSprite:buttonNormalSprite
selectedSprite:buttonSelectedSprite
block:^(id sender) {
//play animation highlighting button
[buttonSelectedSprite runAction:buttonAction]];
}}];
在我來說,我只運行動畫當按鈕被按下時。
從中得到它... – Renaissance 2013-05-08 05:26:27
我已經實現了與CCActions類似的行爲。什麼是最好的性能明智的,自定義CCSprite(像這樣)或實現CCActions? – 2013-05-08 08:05:36
@KarlosZafra,很好的執行CCActions。向我顯示您使用CCActions的代碼。 – Guru 2013-05-08 08:44:35