0

そこで、SKLabelNode を作成します: EDIT: CHANGED CODE TO: //.h {SKLabelNode *PausedLabel22;} //.m PausedLabel22= [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; PausedLabel22.text = @"ゲーム一時停止"; PausedLabel22.fontSize = 30; PausedLabel22.fontColor = [SKColor blackColor]; PausedLabel22.position = CGPointMake(160, 340); //[self addChild:PausedLabel22]; これは以前はまったく問題ありませんでしたが、次の方法があります。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
 if (paused == YES) {
    paused = NO;
    [PausedLabel22 removeFromParent];        
    NSLog(@"UnPaused");
}else if (touchLocation.x > self.frame.size.width - 80 && touchLocation.y > self.size.height-80 && touchLocation.y < self.size.height-40) {
    paused = YES;
    NSLog(@"Paused");    
    //PausedLabel22.text = [NSString stringWithFormat:@"Game Paused"];
    //PausedLabel22.fontColor = [SKColor blackColor];
    //PausedLabel22.position = CGPointMake(160, 320);
    [self addChild:PausedLabel22];
}
NSLog(@"Text Postion: (%f, %f)", PausedLabel22.position.x, PausedLabel22.position.y);
NSLog(@"Text: %@", PausedLabel22.text);
NSLog(@"Text color: %@", PausedLabel22.fontColor);

私のログは私を示しています: 2014-03-15 23:12:12.734 NuclearGame[1418:60b] UnPaused 2014-03-15 23:12:12.735 NuclearGame[1418:60b] テキスト位置: (160.000000, 320.000000) 2014-03- 15 23:12:12.736 NuclearGame[1418:60b] テキスト: ゲーム一時停止 2014-03-15 23:12:12.737 NuclearGame[1418:60b] テキストの色: UIDeviceRGBColorSpace 0 0 0 0 2014-03-15 23:12:13.248 NuclearGame[1418:60b] 一時停止 2014-03-15 23:12:13.251 NuclearGame[1418:60b] テキストの位置: (160.000000, 320.000000) 2014-03-15 23:12:13.252 NuclearGame[1418:60b] テキスト: ゲーム一時停止 2014-03-15 23:12:13.254 NuclearGame[1418:60b] テキストの色: UIDeviceRGBColorSpace 0 0 0 1

ただし、画面上ではラベルが表示され (開始時に呼び出されたため)、その後は問題なく消えますが、画面に再び表示されることはありません!

編集:ラベルはまだ表示されませんでした...

4

1 に答える 1

0

touchesBegan:独自の座標系のメソッドで一時停止ラベルの位置を (160, 320) に設定して、画面外に描画するため、表示されていないと思います。親ノードの座標系にすでに設定されている場合は、その位置を設定する必要はありません。

一時停止ラベル ノードに「pauseLabel」という名前を付けます。touchesBeganこの名前は、ノードが: メソッドでタッチされたかどうかを検出するために使用されます。

//.h
{SKLabelNode *PausedLabel22;}
//.m
PausedLabel22= [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
PausedLabel22.name = @"pauseLabel";
PausedLabel22.text = @"Game Paused";
PausedLabel22.fontSize = 30;
PausedLabel22.fontColor = [SKColor blackColor];
PausedLabel22.position = CGPointMake(160, 340);
[self addChild:PausedLabel22];

タッチが始まりました:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        for (UITouch *touch in touches) {
            SKNode *node = [self nodeAtPoint:[touch locationInNode:self]];
            if (node != self && [node.name isEqualToString:@"pauseLabel"]) {
                if (paused == YES) {
                    paused = NO;
                    [PausedLabel22 removeFromParent];
                } else {
                    paused = YES;
                    [self addChild:PauseLabel22];
                }
                return;
            }
        }
    }

これが機能するかどうかお知らせください。

spriteKit でボタンを作成するために使用する優れたクラスもここにあります: https://stackoverflow.com/a/19199748/2526115

于 2014-03-15T22:32:22.683 に答える