精灵没有被删除 - 迅速

时间:2015-11-16 04:57:33

标签: ios swift sprite-kit

我正在尝试删除一些精灵,但并非所有精灵都被移除。请检查以下代码。

    func removeSquare(squareSprite : SKNode)   {        

       for (index, value) in squares.enumerate()    {

           if Int(value.sprite.position.x) == Int(squareSprite.position.x)  {
              for i in 0..<2  {
                  if index - i >= 0  {
                    squares[index - i].sprite.removeFromParent()
                    squares.removeAtIndex(index - i)
                    print("index - i is \(index - i)")
                    print("squares.count is \(squares.count)")
                  }
              }
           }
       }

i大于零时,精灵不会被移除,否则当它为零时,它会移除精灵。 squares是一个包含方形精灵的数组,其精度为sprite SKSpriteNode。我也检查了方块数,并且数字适当减少,但精灵仍然在屏幕上。

2 个答案:

答案 0 :(得分:0)

问题是你在迭代它时减少了数组。尝试对此行进行注释,以检查您的算法原则上是否正常工作并删除了正确的精灵:

squares.removeAtIndex(index - i)

如果是,请将算法更改为从数组末尾开始

答案 1 :(得分:0)

听起来正方形的索引会发生变化,因为你正在做squares.removeAtIndex(index - i),每次迭代都会使你的数组​​变小,因此i 1变为0在下一个循环中,你想要反方向1..>=0,这样数组就会变小,而不会改变数组中对象的索引。