2017-06-30 176 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() 
} 
} 

我有一個線程1:信號SIGABRT錯誤時觸摸結束繼續按鈕。我發現的一點是,如果我在觸摸中聲明瞭精靈(繼續按鈕),那麼按鈕不會被刪除,但是,當我在繼續按鈕精靈之外聲明繼續按鈕時,繼續按鈕將被刪除。問題是,有時候應用程序只會顯示線程1錯誤。任何想法,我怎樣才能停止崩潰?SpriteKit暫停恢復錯誤

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") 
...} 

這就是按鈕被聲明(功能外)上的代碼的第三行發生

import UIKit 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

錯誤。 這是電腦告訴我的。

2017年6月30日07:32:26.053429-0600生存的夜晚[4635:1030550] * 終止應用程序由於未捕獲的異常 'NSInvalidArgumentException' 的,原因:Attemped」添加SKNode其中 已經有一個父項:name:'(null)' texture:['Up Button'(200 x 200)] position:{0,-254} scale:{0.57,0.57} size:{56.800003051757812,56.800003051757812} 錨點:{0.5,0.5}輪轉:0.00' *第一次調用堆棧:(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: 類型的未捕獲的異常終止NSException

+0

你需要發佈更多的代碼,你的其中一個按鈕不存在,並且正在讀取爲零 – Knight0fDragon

+0

我已經添加了一些上下文到代碼中,並顯示了變量已被聲明的位置,因爲這是我認爲是我的問題的來源。希望這是足夠的:) –

+0

等待,你使用現場套件? – Knight0fDragon

回答

2

的原因是因爲要添加upButton兩次作爲一個孩子到某個節點。

最可能的是,touchesEnded方法中的行self.addChild(upButton)正在引發此問題。此時,請驗證nil中的upButton.parent。如果沒有,你的代碼中有一個邏輯錯誤。