我正在尝试删除一些精灵,但并非所有精灵都被移除。请检查以下代码。
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
。我也检查了方块数,并且数字适当减少,但精灵仍然在屏幕上。
答案 0 :(得分:0)
问题是你在迭代它时减少了数组。尝试对此行进行注释,以检查您的算法原则上是否正常工作并删除了正确的精灵:
squares.removeAtIndex(index - i)
如果是,请将算法更改为从数组末尾开始
答案 1 :(得分:0)
听起来正方形的索引会发生变化,因为你正在做squares.removeAtIndex(index - i),每次迭代都会使你的数组变小,因此i
1
变为0
在下一个循环中,你想要反方向1..>=0
,这样数组就会变小,而不会改变数组中对象的索引。