2

我的 SKScene 使用以下代码以特定时间间隔将精灵添加到屏幕,但如果在添加下一个精灵时屏幕上已经有精灵,我的应用程序将冻结。有没有办法在不冻结应用程序的情况下将相同的精灵添加到屏幕上?

let timer = SKAction.waitForDuration(1.00)
let addSpriteNode = SKAction.runBlock{
    self.addSprite()        
}

let sequence = SKAction.sequence([timer, addSpriteNode])
self.runAction(SKAction.repeatActionForever(sequence), withKey: "Sprites")
4

1 回答 1

6

注意:我目前不在能够运行 Xcode 的计算机上,所以我的内存不足。

注意 2:如果我可以发表评论,我会要求您包含位于addSprite函数中的代码。但是,由于缺乏声誉,我无法这样做。通过包含该代码,您可以获得更快、更准确的答案,因为这是创建和添加精灵的代码。

答:您提到您正在尝试将相同的精灵添加到屏幕上 - 可能是这样的:

let sprite = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(50,50))
func addSprite() {
    addChild(sprite)
}

您不能在屏幕上多次显示相同的精灵。相反,每次你想要一个新的精灵添加到屏幕上时,你都必须创建一个新的精灵。在你的addSprite函数中,你的代码应该创建一个新的精灵,设置它的属性,然后将它添加到主视图中,如下所示:

fun addSprite() {
    let sprite = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(50,50)) // Creates a new sprite. You can customize this as needed.
    addChild(sprite) // Adds newly created sprite to screen.
}

我希望这有帮助。如果您发布代码,我可以提供更适合您问题的答案。

于 2015-10-28T18:08:08.063 回答