我正在製作一款克隆遊戲Simon(a.k.a. Genius,巴西),其中有一個彩色按鈕,玩家需要按照一系列顏色按下。調用和通話之間的延遲
爲了測試,接口具有4個彩色按鈕 我創建爲按鈕出口陣列,以便於訪問:
var buttonArray:[UIButton] = [self.greenButton, self.yellowButton, self.redButton, self.blueButton]
此外,創建了另一個數組來存儲顏色的序列
var colors:[Int] = []
當遊戲開始時,它調用一個函數,它添加一個從0到3的隨機數(buttonArray上的索引),並將此數字添加到colors數組 添加新顏色的顏色序列後,應用程序需要顯示順序CE爲用戶,所以他可以重複它
爲此,它調用playMoves函數,它使用一個用於環路直通的顏色陣列的運行,改變從按鈕α,模擬「眨眼」
func playMoves(){
let delay = 0.5 * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
for i in self.colors{
self.buttonArray[i].alpha = 0.2
dispatch_after(time, dispatch_get_main_queue(), {
self.buttonArray[i].alpha = 1
})
}
}
它將alpha從按鈕更改爲0.2,然後在半秒鐘後將alpha返回到1.我使用dispatch_after,傳遞0.5秒並在代碼塊上返回alpha,就像你們可以請參閱上面的代碼。
在第一次運行時,它看起來是正確的,但當colors數組有2個或更多項目時,當它運行循環時,雖然它有0.5秒的延遲,但它同時閃爍所有按鈕。
這可能是我犯的一個愚蠢的錯誤,但我現在一無所知。
我將非常感謝所有的幫助!
謝謝!
時間/延遲永遠不會改變 – 2014-12-01 22:49:49