cocos2d-xのアクションまとめ3

Pocket

CCWavesTiles3D

ついでなので、インスタンス系(なんて言えばいいかわからないけど制御とか実行系とか)も自分の為にもまとめておきます。いっつも忘れて英語のページを見に行くってことばかりしてるんで(´・ω・`)

ちなみに、今まで以下のアクションをまとめました(あとで探す時用リスト)。

【cocos2d-xのアクションまとめ】

  • CCMoveBy(CCMoveTo)移動
  • CCScaleBy(CCSkaleTo)サイズ変更
  • CCJumpBy(CCJumpTo)ジャンプ
  • CCRotateBy(CCRotateTo)回転
  • CCTintBy(CCTintTo)色合いの変更
  • CCSkewBy(CCSkewTo)傾ける
  • CCBlink 点滅
  • CCFadeIn(CCFadeOut)フェードイン/アウト
  • CCBezierBy(CCBezierTo)ベジェ曲線
  • CCWaves 波立たせる
  • CCWaves3D 立体的に波立たせる
  • CCTwirl ひねりまわす
  • CCLiquid 液体化
  • CCPlase 瞬間移動
  • CCDelayTime 待機(遅延処理)
  • CCShow(CCHide) 表示/非表示

【cocos2d-xのアクションまとめ2】

  • CCCardinalSplineBy(CCCardinalSplineTo)スプライン曲線
  • CCCatmullRomBy(CCCatmullRomTo)Catmull-Romスプライン曲線
  • CCOrbitCamera カメラの旋回
  • CCFlipX(CCFlipY)瞬時に反転
  • CCFlipX3D(CCFlipY3D) くるりと反転
  • CCLens3D 虫眼鏡
  • CCRipple3D 波紋を広げる
  • CCShaky3D(CCShakyTiles3D) 細かくしてシェイク
  • CCToggleVisibility 表示/非表示のトグル
  • CCPageTurn3D ページをめくる
  • CCShuffleTiles タイル状にして並び替え
  • CCFadeOutTRTiles(CCFadeOutBLTiles) タイル状に斜めにフェードアウト
  • CCFadeOutUpTiles(CCFadeOutDonwTiles) タイル状に縦にフェードアウト
  • CCTurnOffTiles タイル状にぽこぽこフェードアウト
  • CCWavesTiles3D タイル状になってウェーブ
  • CCJumpTiles3D タイルがもこもこする
  • CCSplitRows(CCSplitCols) 短冊状になって左右に消えてく
  • CCShatteredTiles3D くだける

アクションの制御

いままではアクションの単体を取り上げたので、次はアクションを繋げたり何度も実行したりする「制御」に関して。

制御には以下のクラスがあるみたい。

  • CCSequence —順番に実行していく
  • CCSpawn —同時に実行する
  • CCRepeat —同じ動作をn回実行
  • CCRepeatForever —同じ動作をずっと実行
  • CCReverseTime —巻き戻し(終了から開始のエフェクト)
pSprite->runAction(CCSequence::create(CCMoveBy::create(...),CCMoveBy::create(...),CCScaleBy::create(...),NULL));
pSprite->runAction(CCSpawn::create(CCMoveBy::create(...),CCScale::create(...),NULL));
pSprite->runAction(CCRepeat::create(CCJumpBy::create(...),5));
pSprite->runAction(CCRepeatForever::create(CCJumpBy::create(...)));
pSprite->runAction(CCReverseTime::create(CCPageTurn3D::create(...)));

もちろんすべてがアクションと同じインターフェイスを実装してるんで、CCSequenceとCCSpawnを組み合わせたりもできます。
ただ組み合わせ次第ではちゃんと動作しない場合もあるっぽい。

アニメーション中に処理を実行

いろいろな処理を実行するようなクラスもあります。それらもすべて同じインターフェイスを実装してるので、runActionで呼び出したりできます。

以下のものがあるみたい。

  • CCCallFunc—引数のないメソッド呼び出し
  • CCCallFuncN—runActionで呼び出したCCNodeを引数に持つメソッド呼び出し
  • CCCallFuncND —CCNode+データを引数にメソッド呼び出し
  • CCCallFuncO —指定したCCObjectを引数に持つメソッド呼び出し
  • CCRemoveSelf —runActionした子を自分で削除させる
  • CCTargetedAction —指定した子にアクションさせる

CCRemoveSelfとCCTargetedActionは簡単に呼び出せる上にいろいろと連携がとれて便利ですね。いや、全部便利だけど。

CCCallFuncなどを使う場合、callfunc_selector(callfuncN_selector、callfuncND_selector、callfuncO_selector)を使用します。

長いけど、使い方としてはおよそこんな感じ。
それぞれの作成時に指定してるthisは、そのメソッドがあるインスタンスを指定してるって感じです。

void Test::method(){
    //アクションさせたいスプライト作成
    CCSprite* pSprite = CCSprite::create("test.png");
    //CallFuncOで投げるものを作成
    CCString* pStr = CCString::create("test");
    //targetedActionで動かしたいスプライト作成
    CCSprite* pTarget = CCSprite::create("test2.png");
    this->addChild(pSprite);
    this->addChild(pTarget);

    pSprite->runAction(CCSequence::create(
        CCCallFunc::create(this , callfunc_selector(Test::callfunc)),
        CCCallFuncN::create(this , callfuncN_selector(Test::callfuncN)),
        CCCallFuncND::create(this , callfuncND_selector(Test::callfuncND) , (void*)100),
        CCCallFuncO::create(this, callfuncO_selector(Test::callfuncO) , pStr),
        CCTargetedAction::create(pTarget , CCMoveBy::create(30,30)),  //pTargetがアクションする
        CCRemoveSelf::create(true), //最後自分を消す。trueの場合、掃除もさせる
        NULL
    ));
}

//CallFuncから呼び出される
void Test::callfunc(){
}

//CallFuncNから呼び出される。この引数は実質はpSprite
void Test::callfuncN(CCNode* sender){
   CCSprite* sprite = (CCSprite*)sender;
}

//CallFuncNDから呼び出される。void* は何でも入る子らしい。
void Test::callfuncND(CCNode* sender , void* datas){
   CCSprite* sprite = (CCSprite*)sender;
   int i = (int)datas;
}

//CallFuncOから呼び出される。
void Test::callfuncO(CCObject* obj){
   CCString* str = (CCString*)obj;
}

他にもイージングアクションやパラパラ漫画風のアニメーションの作成などもあるけど、それはまた別の機会にします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です