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

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

【问题讨论】:

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

标签: arrays swift sprite-kit skspritenode removechild


【解决方案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 是的,如果你在数组中间添加一个元素,它后面的所有元素都会向后移动一个位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 2015-12-02
  • 2014-07-25
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多