2017-03-29 35 views
0

我有一個IF語句,我需要它在分數> = 200時觸發,但只發生一次而不重複。Swift IF語句只能執行一次動作

這裏是我的代碼:

if score >= 200 { 

     meteRedTimer.invalidate() 
     meteBlueTimer = Timer.scheduledTimer(timeInterval: 0.7, target: self, selector: #selector(self.makeBlueMete), userInfo: nil, repeats: true) 

    } else {  


    } 

但是這個不斷啓動定時器一切的時候,比分是=> 200,而不僅僅是一個計時器,我明白了。

如果我的分數= 200,這可能會有效,但是例如根據遊戲的不同,有可能會將分數從190跳到210。

一旦它被觸發一次,我怎麼能基本停止這個IF語句?

+0

我無法達到您的目標您能解釋一下您想要做什麼嗎? –

+0

你可以多給一點背景嗎? – raphh

+0

@NazmulHasan一旦IF語句執行完畢,我希望IF語句結束。 –

回答

1

確保meteBlueTimer被聲明爲可選。

var meteBlueTimer: Timer? 

然後簡單地檢查它是否爲零。

if score >= 200 { 
    if meteBlueTimer == nil { 
     meteRedTimer.invalidate() 
     meteBlueTimer = Timer.scheduledTimer(timeInterval: 0.7, target: self, selector: #selector(self.makeBlueMete), userInfo: nil, repeats: true) 
    } 
} else {  
} 

這樣您只能創建一次meteBlueTimer

1

創建var didPermored = false和內部if語句

if score >= 200 && !didPermormed { 
    didPermormed = true 
    meteRedTimer.invalidate() 
    meteBlueTimer = Timer.scheduledTimer(timeInterval: 0.7, target: self, selector: #selector(self.makeBlueMete), userInfo: nil, repeats: true) 
} else {  

//do stuff 
} 
1

聲明你的計時器作爲可選

var meteBlueTimer : Timer? 
var meteRedTimer : Timer? 

然後檢查計時器沒有運行(nil)。將無效的定時器設置爲nil

if score >= 200 && meteBlueTimer == nil { 
     meteRedTimer?.invalidate() 
     meteRedTimer = nil 
     meteBlueTimer = Timer.scheduledTimer(timeInterval: 0.7, target: self, selector: #selector(self.makeBlueMete), userInfo: nil, repeats: true) 

} else { ... 
+0

好想法:) – rmaddy