2014-05-11 153 views
3

我試圖讓這個SKScene出現在場景在比賽結束的中間,這樣,以前的場景仍然在後臺(類似於笨鳥先飛的結局)可見。這是一個像我希望的方式出現:爲什麼我不能將SKScene添加到另一個SKScene?

enter image description here

到目前爲止,這是我做的代碼:

在遊戲場景

-(void)dieFrom:(SKNode*)killingDebris { 
    _touched = YES; 

    if (_touched == YES) { 
     beatLevel = YES; 
     NSLog(@"touched"); 

     [self runAction:[SKAction sequence:@[ 
      [SKAction runBlock:^{ 
      [_goodSquare removeFromParent]; 
     }], 
      [SKAction runBlock:^{ 

      level2Achieved = [[NSUserDefaults standardUserDefaults] integerForKey:@"newLevelAchieved"]; 
      if (beatLevel == YES) { 
       level2Achieved = 2; 
      } 
      [[NSUserDefaults standardUserDefaults] setInteger:level2Achieved forKey:@"newLevelAchieved"]; 
      [[NSUserDefaults standardUserDefaults] synchronize]; 
      [self removeAllChildren]; 
     }], 
      [SKAction waitForDuration:1.5], 
      [SKAction runBlock:^{ 

      [self endGame]; 

     }], 
                ]]]; 

    } 
} 

-(void)endGame { 

    [self removeAllActions]; 

    gameOverScene *gameOverNode = [[gameOverScene alloc] initWithScore:self.score]; 
    gameOverNode.gameScene = self; 
    gameOverNode.position = CGPointMake(self.scene.size.width/2, -150); 
    [self addChild:gameOverNode]; 

    [gameOverNode runAction:[SKAction moveToY:self.scene.size.height/2 duration:0.6]]; 
} 

在遊戲結束的頭文件:

@class testScene; 

@interface gameOverScene : SKScene 

@property (weak, nonatomic) testScene *gameScene; 

-(instancetype)initWithScore:(NSInteger)score; 

@end 

在遊戲結束的實​​現:

-(instancetype)initWithScore:(NSInteger)score { 

    if (self = [super init]) { 
     self.userInteractionEnabled = YES; 
     self.zPosition = 5.0; 

     SKSpriteNode *bg = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(280, 300)]; 
     bg.alpha = 0.6; 
     [self addChild:bg]; 
    } 
    return self; 
} 

,但是這是我收到的時候我測試它在模擬器上:enter image description here

與以下錯誤信息:

2014-05-11 15:22:05.502 test2[2825:60b] SKScene: Setting the zPosition of a SKScene has no effect. 
2014-05-11 15:22:05.503 test2[2825:60b] SKScene: Setting the position of a SKScene has no effect. 
2014-05-11 15:22:05.504 test2[2825:60b] SKScene: Animating the position of a SKScene has no effect. 

誰能告訴我在哪裏,我已經出錯了,我該如何解決它? 謝謝。 請讓我知道是否需要額外的信息。

+2

請爲您的問題選擇一個更好的標題。有了這個標題,很難得到好的答案。 – dasdom

+1

每個SKView只能有一個場景,iOS上只能有一個SKView。你需要做的是將紅色方框部分設計爲當前場景的疊加層(使用節點)。 – LearnCocos2D

+1

我改變了你的頭銜,因爲我認爲這是你被低估的唯一原因。這個問題本身似乎很好。 – jrturton

回答

2

誰能告訴我在哪裏,我已經錯了,我怎麼能解決這個問題?

SKScene reference page的概述部分:

一個場景是在精靈工具包的節點樹(SKNode)的根節點。

由於樹只能有一個根,所以任何SKNode圖只有一個場景。

要解決該問題,要麼使用SKNode(這不是一個SKScene,很明顯),以包含您的遊戲顯示的結束。然後,您可以將該節點添加到現有場景中。

1

想象場景作爲應用程序的獨立部分。場景因功能不同而不同,例如,您可以擁有主菜單場景,高分場景,遊戲場景和學分場景。
他們每個人都非常不同。場景是完整的實體,它擁有你可能想要的一切。你不要嵌套場景。

你想要做什麼可以SKNode或SKSpriteNode來完成。只需創建新節點並將其添加到您的場景中即可。將它移到一些很遠的座標(如10000,10000)。

當你要顯示它只是改變座標到你所需要的。