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 回答