Swift Spritekit - 如果已添加一个sprite,则向场景添加相同的sprite

Rac*_*ans 2 ios sprite-kit skspritenode swift xcode7.1

我的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")
Run Code Online (Sandbox Code Playgroud)

Cod*_*eIt 6

注意:我目前不在能够运行Xcode的计算机上,因此我将不再使用内存.

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

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

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

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

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.
}
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.如果您发布代码,我可以提供更多针对您的问题的答案.