繁体   English   中英

Swift Spritekit-如果已经添加了一个精灵,则在场景中添加相同精灵的问题

[英]Swift Spritekit - Problems adding the same sprite to the scene if one is already added

我的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")

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

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

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

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

您不能在屏幕上多次显示相同的精灵。 相反,每次您希望将新的精灵添加到屏幕上时,都必须创建一个新的精灵。 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.
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM