应用程序运行后崩溃?

时间:2017-05-16 18:55:21

标签: swift sprite-kit

我试图用弹跳球进行比赛,我想每8秒产一个球。目前,它在产卵后不会移动。我遇到的问题是,在第一个球产生后,应用程序会在接下来的5秒内崩溃。我不确定为什么会这样。我将scheduledTimerWithTimeInterval()放在touchesBegan函数中。

func scheduledTimerWithTimeInterval(){
    Enemytimer = Timer.scheduledTimer(timeInterval: 8, target:self, selector:#selector(GameScene.spawnEnemies), userInfo:nil, repeats:true)
}
func randomBetweenNumbers(firstNum: CGFloat, secondNum: CGFloat) -> CGFloat{
    return CGFloat(arc4random()) / CGFloat(UINT32_MAX) * abs(firstNum - secondNum) + min(firstNum, secondNum)
}

func spawnEnemies(){
    let xPos = randomBetweenNumbers(firstNum: 0, secondNum:frame.width)
    let yPos = randomBetweenNumbers(firstNum: 0, secondNum: frame.height)
    enemies.size = CGSize(width: 20, height:20)
    enemies.color = UIColor(red:255.0,green:0.0,blue:0.0,alpha:1.0)
    enemies.colorBlendFactor = 1.0
    enemies.position = CGPoint(x: xPos, y:yPos)
    enemies.physicsBody?.affectedByGravity = false
    self.addChild(enemies)

1 个答案:

答案 0 :(得分:0)

您很可能遇到内存问题。我会将scheduledTimerWithTimeInterval方法移出touchesBegan。现在,每当用户触摸屏幕时,游戏就会启动一个新的计时器(不启动其他计时器)。将scheduledTimerWithTimeInterval移动到viewDidLoad或类似startGame的东西,以确保它只被调用一次。