在 SpriteKit/Swift 中从数组中删除元素

Posted

技术标签:

【中文标题】在 SpriteKit/Swift 中从数组中删除元素【英文标题】:Removing Elements From Arrays in SpriteKit/Swift 【发布时间】:2015-07-06 03:21:18 【问题描述】:

当您在 SpriteKit 中从 Parent 中删除 SpriteNode 时,它​​是否会自动从它所在的任何数组中删除它?此外,当您从数组中删除一个元素时,是否所有其他元素都会移动,或者该元素曾经存在的位置是否存在间隙?

【问题讨论】:

这些东西你可以在操场上很快找到。或在文档中。 (不,它会改变。) 好吧,我需要弄清楚如何先用另一个节点替换一个节点,然后删除替换的节点,这样就不会发生任何变化 您可以使用节点的name 属性来唯一标识每个节点。例如,设置 node.name = "sprite(i)",其中ifor 循环控制变量。然后,您可以按名称访问每个节点。 我上面评论中的代码应该是node.name = "sprite\(i)"。此外,您无法比较图像名称。 【参考方案1】:

是的,当一个节点从父节点中移除时,它会以各种方式从父节点中移除。没有为父级及其子级自动创建的数组。如果您手动创建一个数组,您也必须手动删除该元素。当一个元素被移除时,它不会在两者之间留下空隙。它之后的所有元素都只是向下移动了一个位置。

var array = [0,1,2,3] //A new array
array.removeAtIndex(1) //The 1 would remove the element in the second place which is a 1 in this case
//Now the array should look like [0,2,3] instead of [0,,2,3]//The one is not nil. No gap in between.

【讨论】:

谢谢,这就是我要找的。然后我假设如果您执行 array.insert(Element, atIndex:) 那么添加元素之后的所有内容都会向后移动? @Tommy 是的,如果你在数组中间添加一个元素,它后面的所有元素都会向后移动一个位置。 很高兴看看我的游戏!! itunes.apple.com/ca/app/save-square-squares-adventures/…

以上是关于在 SpriteKit/Swift 中从数组中删除元素的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit(Swift)敌人没有被删除/敌人和子弹似乎没有联系

如何在 Swift 中从数组中删除一个元素

在 JavaScript 中从数组中删除一个项目

在 Python 中从数组中删除空元素

在 Perl 中从数组中删除值的最佳方法是啥?

如何在反应中从状态数组中添加或删除项目