1) Sequence
여러개의 Action을 순차적으로 실행하기 위해서 쓰는 또 하나의 액션.
auto act1 = MoveTo::create(1.5f, Vec2(380, 100));
auto act2 = ScaleTo::create(1.0f, 2.0f);
auto act3 = MoveTo::create(1.0f, Vec2(380, 300));
auto action = Sequence::create(act1, act2, act3, NULL);
spr1->runAction(action);
// ( 액션1, 액션2, 액션3, ... , NULL) 식으로, 순차적으로 실행할 액션을 쭉 나열한 다음 마지막에 NULL로 마무리를 해줌
2) Spawn
여러개의 Action을 동시에 실행하기 위해서 쓰는 액션
auto act2 = ScaleTo::create(1.0f, 2.0f);
auto act3 = MoveTo::create(1.0f, Vec2(380, 300));
auto spw = Spawn::create(act2, act3, NULL);
//2배로 커지면서 380, 300으로 이동하는 액션 수행
// ( 액션1, 액션2, ... , NULL )식으로, Sequence와 구조가 같음
// 동시실행하는 액션이 실행시간이 다를 경우, 가장 긴 실행시간의 액션이 끝나야 Spawn이 끝난다.
+ 다양한 액션들을 복합적으로 사용할 때, 코드가 여러줄로 길어지는 것을 방지하기 위해서, 하나의 액션 속에 뭉쳐서 쓰는 방법을 연습하는 것이 좋다.
auto spr1 = Sprite::create("Icon-57.png");
spr1->setPosition(100, 100);
this->addChild(spr1);
spr1->runAction(Sequence::create(
MoveTo::create(1.5f, Vec2(380, 100)),
Spawn::create(ScaleTo::create(1.0f, 2.0f), FadeOut::create(3.0f), NULL),
Spawn::create(MoveTo::create(1.0f, Vec2(380, 300)), FadeIn::create(1.0f), NULL),
Spawn::create(RotateBy::create(1.0f, 360), ScaleTo::create(1.0f, 1.0f), MoveTo::create(1.0f, Vec2(100, 100)), NULL)
, NULL));
3) reverse()
반대로 작동하는 액션. by류 액션들을 그 반대로 작동하게 하는 액션이다. sequence등의 액션에도 적용할 수 있다. 단, To 류와 같은 절대값으로 이동하게 하는 액션에는 적용되지 않는다.
auto act = MoveBy::create( 2.0f, Vec2(280, 0) );
auto reverse = act->reverse();
//act와 반대로 동작하는 reverse라는 액션 생성
4) DelayTime
정해진 시간동안 아무 동작을 하지않고 대기하는 것.
auto act = DelayTime::create(3.0f);
//3초동안 대기하는 act생성
5) RemoveSelf
이 액션을 동작하는 객체 자체를 지우는 액션.
기존에 추가된 스프라이트 등을 지우려면 this->remove( 스프라이트 ); 등으로 지워야했지만,
Sequence와 RemoveSelf 액션을 통해 특정 동작이 끝난 뒤 자체적으로 제거되도록 할 수 있다.
spr1->runAction( Sequence::create(MoveTo::create(3.0f, Vec2(380, 100)), RemoveSelf::create(), NULL ) );
//380, 100 좌표로 이동한 뒤 삭제됨
6) Repeat / RepeatForever
지정한 액션을 지정한 횟수만큼 반복함.
단, RepeatForever같은 경우는 Sequence의 내부에 사용될 수 없다.
(무한히 반복하면 순차실행이 안되기때문)
Repeat::create( 반복할 액션(유한횟수), 반복할 횟수 );
RepeatForever::create( 반복할 액션 );
7) ease In/Out
가속/감속의 효과를 주는 액션.
In은 처음에 느렸다가 뒤로 갈수록 빨라짐
Out은 처음에 빨랐다가 뒤로 갈수록 느려짐
InOut은 점점빨라지다가 점점 느려짐
Ease: 기본 효과. 속도 차이의 정도를 직접 두번째 파라미터로 넘겨줘야 함.
EaseSine : 속도가 완만하게 변함.
EaseExponential : 속도가 급격하게 변함.
EaseElastic : 고무줄을 튕기는 듯한 효과를 주며 감.
EaseBack : 목표지점보다 조금 더 뒤로 갔다가 돌아옴.
EaseBounce: 원지점에서 점점 튕기며 목표위치로 감.