これで、ユーザーが画面をダブルタップするたびにアクティブになるラベルに2秒のカウントダウンタイマーを追加しようとしています。 したがって、ダブルタップすると、ユーザーは、数字「2」で作成された新しいラベルを見つけて、次に2番目に「1」、次に「0」を作成します。Swiftで複数のカウントダウンタイマーを作成する
私はこのことをちょうど1タイマーで行うことができます。ユーザーがダブルタップして2つ目のタイマーを作成すると、アプリがクラッシュします。
これは、関数ではなくクラス内で変数が宣言されているために、タイマー関数でラベルなどの宣言を取得できるためです。 タイマー機能をクラスの下ではなく別の関数の中で機能させる方法が見つかった場合、それは正常に機能します。
ここでは、1つのタイマーが導入されている場合にのみ機能するコードを示します。クラスの下
:機能touchesBeganの下
var BTTimer = NSTimer()
var BTCounter = 2
let BT = SKLabelNode
:
let B = SKSpriteNode(imageNamed: "B 110.png")
let Touch : UITouch! = touches.first
let TouchLocation = Touch.locationInNode(self)
let PreviousTouchLocation = Touch.previousLocationInNode(self)
let Player = childNodeWithName("Player") as! SKSpriteNode
let xPos = Player.position.x + (TouchLocation.x - PreviousTouchLocation.x)
let yPos = Player.position.y + (TouchLocation.y - PreviousTouchLocation.y)
B.position = CGPointMake(xPos, yPos)
B.zPosition = -2
self.addChild(B)
BT.fontSize = 27;
BT.fontColor = UIColor.redColor()
BT.position = CGPointMake(xPos - 9, yPos - 30)
BT.zPosition = -1
self.addChild(BT)
BT.text = String(BTCounter);
BTTimer = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: #selector(GameScene.updateBCounter), userInfo: nil, repeats: true)
}
}
は今、同じクラスの別の関数の下で:
func updateBCounter() {
if(BTCounter > 0) {
BTCounter-=1
BT.text = String(BTCounter)
}
else if(BTCounter == 0) {
//Remove B
//Place C
}
私は、ユーザーように、これを変更したいです彼が配備したいと思うほど多くのタイマーを生成することができます。