cocos2dでCCActionというとても便利なクラスがあり、簡単に色々なアクションをキャラクターにつけることができます。今回はその中にある CCCallFuncとCCCallBlockの違いについて簡単に書いてみます。共に同じような処理ができるのですが、上手く使い分けて利用出来れば表現の幅も広がります。
最近まで、cocos2dのCCCallFuncクラスしか知らなくて、全てこれを使いメソッドを呼び出して色々なアクションを考えていたのですが、CCCallBlockクラスというものがあると知り、結構コードを修正しています。
CCCallFuncクラス
CCCallFuncクラスは、メソッドを呼び出してくれます。 下記の例でいえば、soundというメソッドを呼び出しています。 [c]
id action = [CCCallFunc actionWithTarget:self selector:@selector(sound)];
[self runAction:action];
-(void)sound{
[self play sound:@"attack"];//音を鳴らす
}
[/c]
CCCallBlockクラス
CCCallBlockクラスはactionWithBlock:~{}のカッコ内に書かれた処理を実行してくれます。
[c] id sound = [CCCallBlock actionWithBlock:^{
[self play sound:@"attack"];//音を鳴らす
}];
[self runAction:sound];
[/c]
先ほどのCCCallFuncと同じ処理ができます。 余計なメソッドを作らずに済むのでコードが見やすくなります。
基本的にこの2つは他の関数呼び出しなり、フラグの切り替えなどに利用するのですが、その処理が短い場合又は単独でしか使わない場合にCCCallBlockクラスの方を利用しています。 色々ゲームを作るのはいいと思うのですが、こういったどのようなクラスがあり何ができるのかも勉強しないといけないなと感じています。
詳しいことは、公式のリファレンスに載っていますので、ぜひその他のクラスも見てみてください。 cocos2d for iPhone: cocos2d for iPhone API reference