2017-06-30 2 views
1
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
let touch = touches.first 
let touchLocation = touch!.location(in: self) 
if continueButton.contains(touchLocation) { 
    scene?.view?.isPaused = false 
    pauseMenu.removeFromParent() 
    self.addChild(pauseButton) 
    self.addChild(upButton) 
    continueButton.removeFromParent() 
} 
} 

J'ai une erreur Thread 1: Signal SIGABRT lorsque les touches sont terminées sur le bouton continuer. Quelque chose que j'ai trouvé est que si je déclare l'image-objet (bouton continuer) dans des contacts finis le bouton ne sera pas enlevé, cependant, quand je déclare le sprite de bouton de continuation en dehors de la fonction, le bouton continue est enlevé. va juste planter montrant l'erreur de thread 1. Des idées sur comment je peux arrêter le crash?SpriteKit Pause Resume Erreur

class GameScene: SKScene { 
var mainturret = SKSpriteNode(imageNamed: "Main Turret") 
var pauseButton = SKSpriteNode(imageNamed: "Pause Simbol") 
var angleToShoot = 0 
var touchIsOn = 0 
var pointTwoSecondInterval = 0 
let pauseMenu = SKSpriteNode(imageNamed: "Paused") 
var zombieSpawningTimer = Timer() 
var upButton = SKSpriteNode(imageNamed: "Up Button") 
let downButton = SKSpriteNode(imageNamed: "Down Button") 
let popUpMenu = SKSpriteNode(imageNamed: "TurretSpot") 
var continueButton = SKSpriteNode(imageNamed: "Continue") 
...} 

Ceci est l'endroit où les boutons sont déclarés (en dehors des fonctions)

import UIKit 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

Une erreur se produit sur la troisième ligne de code. Voici ce que l'ordinateur me dit.

2017-06-30 07: 32: 26,053429-0600 Survivre à la nuit [4635: 1.030.550] * en raison de l'application Mettre fin exception uncaught 'NSInvalidArgumentException', raison: « attemped ajouter un SKNode qui a déjà un parent: nom: '(null)' texture: ['Up Button' (200 x 200)] position: {0, -254} échelle: {0.57, 0.57} taille: {56.800003051757812, 56.800003051757812} ancre: {0.5, 0.5} rotation: 0.00 ' * Pile d'appel du premier jet: (0x188da6fd8 0x187808538 0x188da6f20 0x1984f1738 0x1984f1664 0x100073d40 0x100074908 0x1984d7050 0x18ef0a46c 0x18 ef05804 0x18eed6418 0x18f6cff64 0x18f6ca6c0 0x18f6caaec 0x188d55424 0x188d54d94 0x188d529a0 0x188c82d94 0x18a6ec074 0x18ef3b130 0x100078c5c 0x187c9159c) libC++ abi.dylib: se terminant par exception uncaught de type NSException

+0

vous devez poster plus de code, un de vos boutons n'existe pas et est lu comme nul – Knight0fDragon

+0

J'ai ajouté un peu de contexte au code et ai montré où les variables ont été déclarées parce que c'est ce que je crois être le source de mes problèmes. J'espère que c'est assez :) –

+0

attendez-vous, utilisez-vous le kit de scène? – Knight0fDragon

Répondre

2

La raison est parce que vous ajoutez upButton deux fois un enfant à un noeud.

Très probablement, la ligne self.addChild(upButton) de votre méthode touchesEnded est à l'origine du problème. À ce stade, vérifiez si upButton.parent dans nil. Sinon, vous avez une erreur logique dans votre code.