我正在使用Swift和SpriteKit制作游戏。
在Objective-C中,我可以使用以下方法:
(void)enumerateChildNodesWithName:(NSString *)name usingBlock:(void (^)(SKNode *node, BOOL *stop))block
我希望对那个*node
执行一些操作,但是我无法在Swift中让这个函数正常工作。基本上,我不知道如何在Swift中引用那个节点。
这是我正在使用的代码,但我在“usingBlock:”部分遇到了问题。我尝试了很多方法很多小时,但没有成功。请帮忙!
func spawnEnemy() -> () {
let enemy = SKSpriteNode(imageNamed: "enemy")
enemy.name = "enemy"
enemy.position = CGPointMake(100, 100)
self.addChild(enemy)
}
func checkCollisions() -> () {
self.enumerateChildNodesWithName("enemy", usingBlock: ((SKNode!, CMutablePointer<ObjCBool>) -> Void)?)
}
BOOL *
类型在beta 5中再次更改了。因此,我们回到了只设置stop.memory
的方式。已更新答案。 - ricksterBOOL *
参数已经改变了多少次其导入的Swift类型。无论如何,这是在闭包语法中使用类型推断的一个很好的理由 - 如果你只写node, stop in
,你就不必在新的Xcode版本中更改声明。 - rickster