CCCallFuncN を使って特定のメソッドを呼び出し、そのメソッドの中でゴニョゴニョ削除させるのも面倒なので、CCRemove というアクションを作りました。
仕組みは、CCShow とか CCHide と同じなので、詳しい解説は抜きにざっくりコードを晒します。
CCActionExtensions.h
@interface CCRemove : CCActionInstant {
}
@end
CCActionExtensions.m
#import "CCActionExtensions.h"
@implementation CCRemove
- (void)startWithTarget:(id)aTarget
{
[super startWithTarget:aTarget];
[((CCNode *)aTarget) removeFromParentAndCleanup:YES];
}
@end
以上です。使い方は、こんな感じになります。
// 3秒かけてフェードアウトさせたあと、スプライトを削除 CCFadeOut *fadeout = [CCFadeOut actionWithDuration:3.0f]; CCRemove *remove = [CCRemove action]; CCSequence *seq = [CCSequence actions:fadeout,remove,nil]; [sprite runAction:seq];
0 件のコメント:
コメントを投稿