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 件のコメント:
コメントを投稿