【cocos2dx】複数のオブジェクトに対して同じCCActionクラスを実行させる

【cocos2dx】複数のオブジェクトに対して同じCCActionクラスを実行させる
   

CCActionクラスはcocos2dの特徴でもあり、ゲームを作る際に使うととても便利です。
今回は、複数のオブジェクトに「同じCCActionクラス」を実行させる方法をブログに書いていきたいと思います。

copyを使う

結論から言いますとcopyを使って、複数のCCActionクラスを作成します。

一度作成したCCActionクラスは1回しか利用ができません。
例えば、4つのオブジェクトに同じようなアクションを行う際には、CCActionをオブジェクトと同じ数だけ用意しなければいけません。
動かすことができますが、コードが長くなります。

[例]一つのオブジェクトの場合

    CCSprite *sprite1; 

    CCDelayTime *time = CCDelayTime::create(0.0f);
    CCScaleTo *scale = CCScaleTo::create(0.1f, 1.0f);
    CCSequence *sq = CCSequence::create(time,scale,NULL);
    sprite1->runAction(sq);




そこで利用できるのがcopy()です。
これを使えば、CCActionクラスを複製して利用ができます。

[追記]
copy()を使うときには、メモリー管理にも注意。
autorelease()を使わないとメモリーリークの原因になります。


    CCSprite *sprite1; 
    CCSprite *sprite2; 
    CCSprite *sprite3; 
    CCSprite *sprite4; 

    CCDelayTime *time = CCDelayTime::create(0.0f);
    CCScaleTo *scale = CCScaleTo::create(0.1f, 1.0f);
    CCSequence *sq = CCSequence::create(time,scale,NULL);

    sprite1->runAction((CCSequence*)sq->copy()->autorelease());
    sprite2->runAction((CCSequence*)sq->copy()->autorelease());
    sprite3->runAction((CCSequence*)sq->copy()->autorelease());

    sprite1->runAction(sq);


こうすれば、コードが短くなりわかりやすくなります。

Related Posts Plugin for WordPress, Blogger...