我试图在用户触摸屏幕2秒钟后添加Child(它在触摸Began内部),但它不起作用。我做错什么了吗?
//show myLabel after 2 seconds
self.myLabel.position = CGPoint(x: self.frame.width / 1.1, y: self.frame.height / 2)
self.myLabel.text = "0"
self.myLabel.zPosition = 4
self.myLabel.runAction(SKAction.sequence([SKAction.waitForDuration(2.0), SKAction.runBlock({
self.addChild(self.myLabel)
)]))
问题是,除非在场景中,否则操作不会在myLabel上运行,因此将最后一部分更改为:
self.runAction(SKAction.sequence([SKAction.waitForDuration(2.0), SKAction.runBlock({
self.addChild(self.myLabel)
})]))
或者更好:
self.runAction(SKAction.waitForDuration(2)) {
self.addChild(self.myLabel)
}
注意:我在这里假设self是一个场景或其他已经添加到场景中的节点。
您可以在需要的地方声明此函数
public func delay(delay:Double, closure:()->()) {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
}
并用作:
delay(2.0) {
self.addChild(self.myLabel)
}