0

これは私を壁に追いやっています!UBERの簡単な答えがあると確信していますが、それを理解することはできません!

CCActionManager を使用して、現在画面上で実行中のすべてのアクションを正常に一時停止しました。私の質問は、それらを再び実行するにはどうすればよいですか?

PS、pauseTarget:self を試してみましたが、何らかの理由で現在実行中のすべてのアクションが停止しませんか?

これが私のコードです:

    if (backOrNot == NO) {
Pencil = [CCSprite spriteWithFile:@"Pencil.png"];
Pencil.position = ccp(MainChar.position.x, MainChar.position.y + 10);
id action = [CCMoveTo actionWithDuration:3 position:ccp(Pencil.position.x, 550)];
    [action setTag:4];
[Pencil runAction:action];
[self addChild:Pencil z:2 tag:4];
NSLog(@"Pencil Shot!");
    [[CCActionManager sharedManager] resumeTarget:self];
}
else{
    [[CCActionManager sharedManager] pauseAllRunningActions];
}

一時停止に入ったとき、または backOrNot が返されたときに、すべてのペンシル (多数あります) を停止しようとしています。

編集:

問題はとても簡単に修正できました。私のポイントは、一時停止して機能させることでした。疑問に思っているすべての人のために、あなたはこれをします:

[[CCDirector sharedDirector]pause];
4

1 に答える 1

0

そうです、簡単な答えがあります。:)

すべてのアクションを一時停止すると、一時停止されたアクションを含む NSMutableSet が返されます。

CCActionManager* am = [CCActionManager sharedManager];
NSSet* pausedActions = [am pauseAllRunningActions];

後で、これらの一時停止されたアクションをセットから一時停止解除できます。

[am resumeTargets:pausedActions];
pausedActions = nil;

再開後の (非 ARC: 保持) 一時停止アクションと nil (非 ARC: 解放および nil) 一時停止アクションには、必ず強い参照を使用してください。セットの内容は、アクションが再開されるまでのみ有効です。セットを保持している場合、アクションは完了後に解放されません。

[self pauseSchedulerAndActions] を実行すると CCNode クラスが使用するものであり、確実に機能します。

于 2012-12-16T21:38:48.980 に答える