Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift Spritekit-如果已经添加了相同的精灵,则在将其添加到场景中时会出现问题_Ios_Swift_Sprite Kit_Skspritenode_Xcode7.1 - Fatal编程技术网

Ios Swift Spritekit-如果已经添加了相同的精灵,则在将其添加到场景中时会出现问题

Ios Swift Spritekit-如果已经添加了相同的精灵,则在将其添加到场景中时会出现问题,ios,swift,sprite-kit,skspritenode,xcode7.1,Ios,Swift,Sprite Kit,Skspritenode,Xcode7.1,我的SKScene使用以下代码以特定的时间间隔向屏幕添加精灵,但是如果在添加下一个精灵时屏幕上已经有精灵,我的应用程序将冻结。有没有办法在不冻结应用程序的情况下将相同的精灵添加到屏幕上 let timer = SKAction.waitForDuration(1.00) let addSpriteNode = SKAction.runBlock{ self.addSprite() } let sequence = SKAction.sequence([timer, ad

我的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.
}

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

是的,我现在遇到的唯一问题是当与精灵发生碰撞并将其从屏幕上移除时使用粒子效果,如果我移除该精灵,它将移除所有而不是特定的精灵。当精灵发生碰撞以产生效果时,获取该精灵的位置。该效果应用于屏幕上的所有节点,但碰撞的精灵除外:(如果我问了一些愚蠢的问题,很抱歉,谢谢你回答我的问题。@Rachel Evans所以你的问题是它被从屏幕上删除了,是吗?我对SpriteKit不是非常熟练,但你应该可以为每个精灵设置一个名称,作为标签。然后你只能删除具有该名称的精灵。这取决于p。)因为如果你在屏幕上有很多精灵,它可能会很慢。这只是一个想法,你必须定制它,因为每个程序都有它自己的需要。很高兴提供帮助!没有愚蠢的问题,只有愚蠢的错误!