2015-01-14 3 views
1

게임에서 빨간불 애니메이션 중에 화면을 터치하면 게임 오버 라벨이 나타나기를 원합니다. 붉은 빛 애니메이션은 녹색 빛 애니메이션이 꺼져있을 때 켜져 있습니다. 붉은 빛 애니메이션 중에 플레이어가 화면에 닿으면 게임 화면이 일시 중지되고 레이블 위의 게임이 표시되기를 원합니다. 지금까지 이걸 가지고 있지만 앱을 실행하려고하면 앱이 다운됩니다.장면 위로 게임 만들기

오류 메시지 :

인해 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료, 이유는 : (널) ': 이름이 이미 부모가있는 SKNode 추가 Attemped' '텍스트'게임 오버! 다시 플레이 눌러 '글꼴 이름을 :'돋움 '위치 : {1024, 768}'

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
    /* Called when a touch begins */ 


    if gameOverLabel.parent == nil 
    { 
     self.addChild(gameOverLabel) 
    } 

    println(score) 

    scoreLabel.text = "\(score)" 
} 
+0

충돌 메시지가 표시되고 충돌하는 코드 줄이 강조 표시됩니다. addChild를 실행할 때 gameOverLabel이 이미 계층 구조에있을 가능성이 있습니까? – LearnCocos2D

+0

원래 게시물에 오류 메시지를 추가했습니다. –

+2

불쾌감은 없지만 오류 메시지를 읽으셨습니까? 나에게 꽤 분명해 보인다. 어떤 시점에서'removeFromParent'를 사용해야합니다. –

답변

0

을이보십시오. 너무 큰 글꼴 크기와 화면 외부에있는 프레임으로 gameOverLabel을 설정했습니다. 이것이 보이지 않는 이유였습니다. 게임이 끝나면 게임을 멈춰야합니다.

if (!self.paused) 
{ 
    if isGreenLightON 
    { 
     score += 50 
    } 
    else 
    { 
     self.paused = true 

     if (gameOverLabel.parent != nil) 
     { 
      gameOverLabel.removeFromParent() 
     } 
     gameOverLabel.fontName = "Helvetica" 
     gameOverLabel.fontColor = UIColor.blackColor() 
     gameOverLabel.fontSize = 24 
     gameOverLabel.text = "Game Over! Tap to Play Again" 
     gameOverLabel.position = CGPointMake(CGRectGetMidX(self.frame), self.frame.size.height - 50) 
     self.addChild(gameOverLabel) 
    } 
} 
else 
{ 
    score = 0 
    if (gameOverLabel.parent != nil) 
    { 
     gameOverLabel.removeFromParent() 
    } 
    self.paused = false 
} 
scoreLabel.text = "\(score)" 
+0

테스트를 마쳤으며 gameOverLabel이 표시되지 않았습니다. 내가 사용한 코드를 원래 게시물에 추가했습니다. –

+0

접촉에서 코드 대신 위의 코드를 사용해보십시오. – rakeshbs