我正在将一个Sprkit应用转换为Swift。但是我遇到了一个问题,无法转换这个方法:
SKAction *releaseBalls = [SKAction sequence:@[[SKAction performSelector:@selector(createMyNode) onTarget:self],[SKAction waitForDuration:1] ]];
在 Swift 中有没有其他的代码替代方案?谢谢
我正在将一个Sprkit应用转换为Swift。但是我遇到了一个问题,无法转换这个方法:
SKAction *releaseBalls = [SKAction sequence:@[[SKAction performSelector:@selector(createMyNode) onTarget:self],[SKAction waitForDuration:1] ]];
在 Swift 中有没有其他的代码替代方案?谢谢
尝试一下这个
class MyScene: SKScene {
func doAction() {
let releaseBalls = SKAction.sequence([
SKAction.runBlock(self.createMyNode),
SKAction.waitForDuration(1)
])
// run action
}
func createMyNode() {
// create the nodes
}
}
MyScene.doAction()
还是在调用 MyScene
实例上的 doAction
(var scene: MyScene = MyScene(); scene.doAction()
)?你将其描述为 class.doAction()
的事实让我想到你正在尝试将 doAction
作为类方法而不是实例方法运行。 - Brendon RobertoSKAction.sequence([SKAction.runBlock({run_some_code(); run_other_code()}), SKAction.waitForDuration(3)])
代替SKAction.runBlock(self.createMyNode)
(那个';'是必需的分隔符!) - Mr. T()
,例如 SKAction.runBlock(class.doAction)
。我有点晚了,但遇到了同样的问题 :) - Dima Deplov虽然通常更喜欢其他解决方案,但未来的读者可能会想知道,performSelector
和同一系列的其他成员在Swift 2中已经可用。
runBlock
,在闭包中调用self.createMyNode
即可。 - Jason CocoSKAction.runBlock() { [unowned self] () in self.createMyNode() }
在文档中查看。 - Brendon Roberto