0

私は長い間問題を解決しようとしてきましたが、残念ながら解決策を見つけることができませんでした。あなたが私を助けてくれることを願っています...

ターン制のゲームを開発しようとしています。プレーヤー1はユーザー、プレーヤー2はiPhoneです。プレイヤー1の番になったときにタッチを受け取りたいです。

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
if (self.playerNo==1) {   //control player1
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
[self selectSpriteForTouch:touchLocation];
return YES;
}
//if it's not player1's turn, return NO
return NO;
}

iPhoneが回ったら、5秒間タッチを無効にしたい。以下のすべての方法を試しましたが、成功しませんでした。

-(void)iphonesTurn
{

[NSThread sleepForTimeInterval:5];

//
//game logic...
//

}

5秒間、画面を数回タッチします。すべてのタッチが保存されているように見え、player1の番になると、アプリがすべてのタッチに反応することに気付きました。

タッチを完全に無効にするにはどうすればよいですか?

ご協力いただきありがとうございます。

4

1 に答える 1

0

コードスニペットがどこにあるかはわかりませんが、メインスレッドにぶつかった場合は、絶対にブロック(一時停止)しないでください。

そのようなことをしてみてください(それはcocos2d 2.0の最終バージョンで動作します):

- (void)iphonesTurn
{
   [[[CCDirector sharedDirector] touchDispatcher] setDispatchEvents:NO];
   [self scheduleOnce:@selector(enableTouch) delay:5.0f];
}

- (void)enableTouch
{
   [[[CCDirector sharedDirector] touchDispatcher] setDispatchEvents:YES];
}
于 2012-07-25T20:01:30.653 に答える