我有一个程序,其中精灵节点从屏幕顶部落到底部。当它到达底部时,它会在再次下降之前重新回到顶部。它一遍又一遍地做到这一点。除了持续时间,一切都很完美。持续时间总是非常快。这是我的代码:
if fruit1.position.y == startPosition {
//Generate random number from 6 to 16
fallDuration = NSTimeInterval(arc4random_uniform(10) + 6)
moveActionDown = SKAction.moveByX(0.0, y: CGFloat(-height - fruit1.frame.height - 100), duration: fallDuration)
fruit1.runAction(moveActionDown)
println(fallDuration)
}
使用NSTimer每0.2秒调用此代码。代码运行时,完成操作所需的实际持续时间最多为2或3秒。但是println
打印出预期的数字,即10,15,12,8。
这让我感到困惑,因为文档说moveByX duration参数以秒为单位。而且,如果我使用moveToY,则持续时间按预期工作。