我有一个CGPoints数组(spritePositions
),我想用选定数量的位置创建SKSpriteNode(留下out的特定索引)。请参阅以下代码:
CreateSprite(missingIndexes: [int]) {
//for (index, value) in enumerate(spritePositions) filtering out/excluding missingIndexes array {
var sprite = SKSpriteNode(imageNamed: "spriteImage")
sprite.position = value
addChild(sprite)
}
}
答案 0 :(得分:0)
您可以使用missingIndexes数组中的contains函数来过滤掉索引。如果索引未正常包含在missingIndexes进程中。如果索引包含在missingIndexes中,则不执行任何操作。
Swift 1.2:
for (index, value) in enumerate(spritePositions) {
if !contains(missingIndexes, index) {
var sprite = SKSpriteNode(imageNamed: "spriteImage")
sprite.position = value
addChild(sprite)
}
}
Swift 2.0
for (index, value) in spritePositions.enumerate() {
if !missingIndexes.contains(index) {
var sprite = SKSpriteNode(imageNamed: "spriteImage")
sprite.position = value
addChild(sprite)
}
}
答案 1 :(得分:0)
Swift 1.2:
var filteredObjects = spritePositions.filter { !contains(missingIndexes, find(spritePositions, $0)!)}
通过过滤索引来获取列表
for object in filteredObjects {
print(object)
}
在循环中使用它
不一定是最好的方法,只是使用过滤器的一种方式,这将允许您在以后需要时保留过滤后的数组。
答案 2 :(得分:0)
另一种选择是使用Set
类型和map
函数的组合。以下代码段适用于Swift 1.2。
let missingIndexes: [Int] = ...
let spritePositions: [CGPoint] = ...
map(Set(0 ..< count(spritePositions)).subtract(missingIndexes), { index -> Void in
var sprite = SKSpriteNode(imageNamed: "spriteImage")
sprite.position = spritePositions[index]
addChild(sprite)
})
这比在contains
数组上重复调用missingIndexes
更有效。