我想创建这个效果,分数会随着每个数字之间的延迟而变化,比如Flappy Bird中屏幕上的游戏得分。
在这个例子中,它应该在我触摸屏幕时开始计数。
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
// Global declaration of objects
var scoreLabel = SKLabelNode()
var score:Int = 15
override func didMoveToView(view: SKView) {
/* Setup your scene here */
scoreLabel = SKLabelNode(fontNamed: "RubberBiscuitBold")
scoreLabel.fontSize = 50
scoreLabel.fontColor = SKColor.blackColor()
scoreLabel.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
scoreLabel.zPosition = 1000
self.addChild(scoreLabel)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/* Called when a touch begins */
for var i = 0; i <= score; i++ {
scoreLabel.runAction(SKAction.waitForDuration(1))
scoreLabel.text = "\(i)"
print("\(i)")}
}
答案 0 :(得分:1)
尝试这样的事情:
for var i = 0; i <= 10; i++ {
let seconds: Double = 0.5
let count = i
let delay = seconds * Double(NSEC_PER_SEC) // nanoseconds per seconds
let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(i)))
dispatch_after(dispatchTime, dispatch_get_main_queue(), {
print("\(count)")
scoreLabel.text = "\(count)" })
}
答案 1 :(得分:1)
或者,使用递归函数定义,它会更紧凑(并且希望可用)
defmodule MyApp.Repo do
use Ecto.Repo, otp_app: :my_app
use Scrivener, page_size: 20
def after_connect(_pid) do
IO.puts "after_connect"
Ecto.Adapters.SQL.query(MyApp.Repo, "SET search_path TO 'my_app';", [])
end
end
答案 2 :(得分:0)
这里只是一个想法。 如果在较小的管道之间创建其他节点,该怎么办? 做到这一点,一旦他们碰撞,你的分数就会增加。
那也会带给你你想要的延迟。