2016-04-26 11 views
1

これで、ユーザーが画面をダブルタップするたびにアクティブになるラベルに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 
    } 

私は、ユーザーように、これを変更したいです彼が配備したいと思うほど多くのタイマーを生成することができます。

答えて

0

あなたはこのようupdateBCounter更新することができます。

func updateBCounter(timer: NSTimer) 

あなたのセレクタを使用すると、タイマーのスケジュールを設定するとき、あなたはそれを持っていますupdateBCounterに送信された辞書やタイマーにuserInfoを設定することができます#selector(GameScene.updateBCounter(_:)

に変更されますそのuserInfoプロパティで。

あなたは何をしようとしているのか正確にはわかりませんが、同じセレクターを呼び出すと同時に複数のタイマーを実行するツールですが、どちらを扱っているか知っています。

物事を追跡し、代わりにuserInfo辞書にキーを作成するプロパティを取り除きます。

あなたはUSERINFO(だけでなく、辞書)として任意のオブジェクトを使用することができますので、あなたも行うことができます:

class TimerData { 
    var counter: Int 
    var l: SKLabelNode 
} 
関連する問題