0

ゲームの一時停止画面メニューに取り組んでいます。一時停止画面を表示した後、ユーザーに画面をタッチして一時停止画面を非表示にし、ゲームを再開してもらいます。これはシミュレーターでは完全に機能しますが、実際のデバイスでテストすると機能しません。一時停止メニュー専用のタッチにデバイスが反応しないようです。ゲームの他のすべての部分は、シミュレーターとデバイスの両方で正常に動作します。シミュレーターでは機能するが、デバイスでは機能しないのは奇妙です。これは私が一時停止画面用に持っているコードです:

- (id)init {
if ((self = [super init])) {

    CGSize windowSize = [[CCDirector sharedDirector] winSize];
    //windowSize.height = 768.0;
    //windowSize.width = 1024.0;

    CCSprite *whiteScreen = [CCSprite spriteWithFile:@"OutOfTime.png"];
    whiteScreen.position = ccp(windowSize.width / 2, windowSize.height / 2);
    [self addChild:whiteScreen];

    CCLabelTTF *touchToDismiss = [CCLabelTTF labelWithString:@"Touch screen to continue"     fontName:@"Marker Felt" fontSize:30];
    touchToDismiss.color = ccBLACK;

    touchToDismiss.position = ccp(windowSize.width / 2, 20);
    [self addChild:touchToDismiss];
    }

    return self;
}

- (void)onEnter {
    [super onEnter];
    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:NO];
}

- (void)gameOverWithScore:(NSInteger)score {
    CGSize windowSize = [[CCDirector sharedDirector] winSize];
    //windowSize.height = 768.0;
    //windowSize.width = 1024.0;

    CCLabelTTF *touchToDismiss = [CCLabelTTF labelWithString:@"Game Over" fontName:@"Marker Felt" fontSize:75];
    touchToDismiss.color = ccBLACK;
    touchToDismiss.position = ccp(windowSize.width / 2, windowSize.height / 2 + 40);
    [self addChild:touchToDismiss];

    NSString *scoreString = [NSString stringWithFormat:@"Final Score: %d", score];
    CCLabelTTF *scoreLabel = [CCLabelTTF labelWithString:scoreString fontName:@"Marker Felt" fontSize:60];
    scoreLabel.color = ccBLACK;
    scoreLabel.position = ccp(windowSize.width / 2, (windowSize.height / 2) - 40);
    [self addChild:scoreLabel];
}

- (void)setMessage:(NSString *)message {

}

- (void)dealloc {
    [super dealloc];
}

- (BOOL)ccTouchBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"haha");
    return YES;
}
4

1 に答える 1

0

おそらくinitに次の行を追加する必要があります

self.isTouchEnabled = YES;

タッチ イベントを持つすべての CCLayer に対してこれを行う必要があります。

編集: ccTouchBegan はログのみを出力することに気付きました。このログは、XCode のデバッグ ウィンドウで簡単に表示できますが、デバイスではユーザーから隠されています。他のことをしてみてください。

于 2012-07-31T20:11:08.583 に答える