-(void)testAction
{
CCSprite *ball1;
CCSprite *ball2;
CCSprite *ball3;
ball1 = [CCSprite spriteWithFile:@"ball.png"];
ball2 = [CCSprite spriteWithFile:@"ball.png"];
ball3 = [CCSprite spriteWithFile:@"ball.png"];
ball1.position=ccp(50,50);
ball2.position=ccp(50,150);
ball3.position=ccp(50,250);
[self addChild:ball1];
[self addChild:ball2];
[self addChild:ball3];
// CCEaseIn은 점점 빠르게. rate는 비율(얼마나 잘 일어나게 할 것인가)
id rightMove1 = [CCMoveBy actionWithDuration:4 position:ccp(400,0)];
id fasterBall = [CCEaseIn actoinWithAction:rightMove1 rate:3.0];
[ball1 runAction:fasterBall];
// CCEaseOut 점점 느리게
id rightMove2 = [CCMoveBy actionWithDuration:4 position:ccp(400,0)];
id slowerBall = [CCEaseOut actoinWithAction:rightMove2 rate:3.0];
[ball2 runAction:slowerBall];
// CCEaseInOut 빨라지다가 느려지게
id rightMove3 = [CCMoveBy actionWithDuration:4 position:ccp(400,0)];
id totalSpeed = [CCEaseInOut actoinWithAction:rightMove3 rate:3.0];
[ball3 runAction:totalSpeed];
// CCEaseElastic 뒤로 살짝 갔다가 튕겨서 앞으로 이동
id rightMove4 = [CCMoveBy actionWithDuration:4 position:ccp(400,0)];
id test4 = [CCEaseElasticIn actoinWithAction:rightMove4 period:1.0];
[ball1 runAction:test4];
// CCEaseBounceIn 튕기면서 이동, Out형태도 있음
id rightMove5 = [CCMoveBy actionWithDuration:4 position:ccp(400,0)];
id test5 = [CCEaseBounceIn actionWithAction:rightMove4];
[ball1 runAction:test5];
// CCScale 액션과 CCEaseBounce 액션과 섞기
id scale = [CCScaleBy actionWithDuration:4 scale:3.0];
id test6 = [CCEaseBounceOut actionWithAction:scale];
[ball1 runAction:test6];
// fadeout 점점 사라짐 | fadein 점점 나타남
id fadeOut = [CCFadeOut actionWithDuration:3.0];
[ball1 runAction:fadeOut];
// fadein일 때 처음 스프라이트가 깜빡이거나 또는
// 나타났다가 사라질 수 있기 때문에 애초부터 투명하게 시작한다.
ball1.opacity = 0;
id fadeIn = [CCFadeIn actionWithDuration:3.0];
[ball1 runAction:fadeIn];
// CCFadeTo 원하는 투명도 0부터 투명도 100까지 변화
ball1.opacity = 0;
id fadeTo = [CCFadeIn actionWithDuration:3.0 opacity:100];
[ball1 runAction:fadeTo];
// CCRepeat 액션을 반복
// right는 오른쪽 이동, left는 왼쪽 이동
// total에 right와 left를 넣어 순차 실행, 세 번 반복 (repeat)
id right = [CCMoveBy actionWithDuration:2 position:ccp(400,0)];
id left = [CCMoveBy actionWithDuration:2 position:ccp(-400,0)];
id total = [CCSequence actions:right,left,nil];
id repeat = [CCRepeat actionWithAction:total times:3];
[ball1 runAction:repeat];
// CCRepeatForever 액션을 무한 반복
id right = [CCMoveBy actionWithDuration:2 position:ccp(400,0)];
id left = [CCMoveBy actionWithDuration:2 position:ccp(-400,0)];
id total = [CCSequence actions:right,left,nil];
id repeatForever = [CCRepeatForever actionWithAction:total];
[ball1 runAction:repeatForever];
}
// 버튼 누르면 액션을 멈추는 예제
// 위의 CCRepeatForever 예제를 조금 더 확장한 것
-(id)init
{
if ( (self=[super init]) )
{
// 터치 이벤트를 받기 위해 넣어야 하는 코드 (반드시!)
self.isTouchEnabled = YES;
CCSprite *ball1;
CCSprite *ball2;
CCSprite *ball3;
ball1 = [CCSprite spriteWithFile:@"ball.png"];
ball2 = [CCSprite spriteWithFile:@"ball.png"];
ball3 = [CCSprite spriteWithFile:@"ball.png"];
ball1.position = ccp(50,50);
ball2.position = ccp(50,150);
ball3.position = ccp(50,250);
[self addChild:ball1];
[self addChild:ball2];
[self addChild:ball3];
// CCRepeatForever 액션을 무한 반복!
id right = [CCMoveBy actionWithDuration:2 position:ccp(400,0)];
id left = [CCMoveBy actionWithDuration:2 position:ccp(-400,0)];
id total = [CCSequence actions:right,left,nil]; //순차적으로 액션
CCRepeatForever *repeatForever = [CCRepeatForever actionWithAction:total];
// 액션도 CCNode를 상속받은 클래스이므로 tag를 쓸 수 있다.
repeatForever.tag = 1;
[ball1 runAction:repeatForever];
}
return self;
}
// 터치 이벤트가 발생하면 실행되는 메소드
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)withEvent
{
// tag 1인 액션을 중지한다.
// 위에서 repeatForever의 태그를 1로 설정했으므로
// 최종적으로, 무한 반복하는 액션을 중지시킨다.
[ball1 stopActionByTag:1];
NSLog("Touch!");
}