我有一个节点可以同时与其他两个节点联系。我想知道的是,当我的节点与其他两个节点(同时)联系时,didContactBegin代码同时触发,或者是一个didContactBegin处理然后是下一个。
我会想到一个然后是下一个,所以为了使第二个或第三个didContactBegin不会触发,我设置了一个布尔值和一个计时器。但是在这样做之后,我开始认为didContactBegin同时触发两个,因为我的代码似乎经常得到双重打印消息,但不是所有时间。
func didBeginContact(contact: SKPhysicsContact) {
if contact.bodyA.node?.name == "segment" || contact.bodyB.node?.name == "segment" {
if boolean == true {
boolean = false
timerResetBoolNextAction.invalidate()
timerResetBoolNextAction = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("ResetBoolean"), userInfo: nil, repeats: false)
println("boolean is true")
}
}
}
func ResetBoolean() {
boolNextAction = true
}
无论如何,我想知道的主要事情是didContactBegin是一次性触发还是排队。因为如果它确实排队,我相信我的代码肯定会出现其他问题。
答案 0 :(得分:2)
如果一个“或”另一个为真,它只会进入if语句,所以如果它们同时发生,if语句将读取第一个子句并且它将为true并将直接执行并执行你的代码“只有一次”。声明在下一帧或循环中需要再次成立才能再次发生。
希望这能回答你的问题。