【Cocos2d-x】アニメーションその1
【Cocos2d-x】アニメーションその1
Cocos2dxには様々なアニメーションメソッドが用意されています。よく使うものリストアップすると、
MoveTo,MoveBy(移動)
RotateTo,RotateBy(回転)
JumpTo,JumpBy(ジャンプ)
FadeIn(フェードイン)
FadeOut(フェードアウト)
Hide(非表示)
Show(表示)
Blink(点滅)
DelayTime(待機)
CallFunc(メソッド呼び出し)
CallFuncN(アニメーション対象を引数に渡してメソッド呼び出し)
RemoveSelf(消去)
などがあり、これらをSequenceやSpawnと組み合わせて使用するのが一般的です。
例を、前回の記事の続きでやってみます。
class HelloWorld : public cocos2d::Layer { //略... void startAnimation(float dt); void callFuncTest(); void callFuncNTest(Ref *ref); };
bool HelloWorld::init() { //略... this->scheduleOnce(schedule_selector(HelloWorld::startAnimation), 2.0f); return true; } void HelloWorld::startAnimation(float dt) { for (int i = 0; i < (int)_items.size(); i ++) { MoveBy *moveBy = MoveBy::create(3.0f, Vec2(100, 200)); JumpBy *jumpBy = JumpBy::create(1.0f, Vec2(-80, -30), 200, 2); RotateBy *rotateBy = RotateBy::create(2.0f, 380); MoveTo *moveTo = MoveTo::create(4.0f, Vec2(100, 100)); //rotateByとmoveToを同時にアニメーションします Spawn *spawn = Spawn::create(rotateBy, moveTo, nullptr); DelayTime *delay = DelayTime::create(1.0f); RemoveSelf *removeSelf = RemoveSelf::create(); //moveBy→jumpBy→spawn→delay→removeSelfを順番に実行します Sequence *sequence = Sequence::create(moveBy, jumpBy, spawn, delay, removeSelf, nullptr); Sprite *item = _items.at(i); item->runAction(sequence); } } void HelloWorld::callFuncTest() { } void HelloWorld::callFuncNTest(cocos2d::Ref *ref) { }
アニメーションはこのようになります。
アニメーション部分はひとつに纏めるとこうなります。
void HelloWorld::startAnimation(float dt) { for (int i = 0; i < (int)_items.size(); i ++) { Sprite *item = _items.at(i); item->runAction(Sequence::create(MoveBy::create(3.0f, Vec2(100, 200)), JumpBy::create(1.0f, Vec2(-80, -30), 200, 2), Spawn::create(RotateBy::create(4.0f, 600), MoveTo::create(4.0f, Vec2(100, 100)), nullptr), DelayTime::create(1.0f), RemoveSelf::create(), NULL)); } }
MoveToとMoveByの違いや、SequenceとSpawnの使い方が理解できたと思います。
次回はCallFuncについて説明します。
この記事へのコメントはこちら