延迟改变得分

时间:2016-02-01 11:18:32

标签: swift for-loop sprite-kit

我想创建这个效果,分数会随着每个数字之间的延迟而变化,比如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)")}

}

3 个答案:

答案 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)

这里只是一个想法。 如果在较小的管道之间创建其他节点,该怎么办? 做到这一点,一旦他们碰撞,你的分数就会增加。

那也会带给你你想要的延迟。

相关问题