Swiftでランダムな3桁の数字を高速で何回か表示させた後に停止させる、という動作を自動的に繰り返して行う方法

実現したいこと

ビンゴなどの抽選数字のように、ランダムな3桁の数字を高速で5〜10秒表示させた後停止させる。
その数字を1秒表示させたら再度抽選がスタートされるようなプログラミングを行いたい。
また、高速で抽選している間はBGMが流れ、数字が停止するとともに音楽も停止するようにしたい。

発生している問題・分からないこと

非同期処理を用いて、高速で数字を表示させながらBGMを流すこと、数字が停止するとともに音楽を停止させることまでは実現できました。
しかし、1度きりで繰り返し行うことができません。

該当のソースコード

Swift

1@IBAction func lotteryStart(_ sender: Any) 2 lottery()3 print("非同期処理中")4 }5 6func lottery() {7 DispatchQueue.global().async {8 self.playSound(filename: "hendouMusic", filetype: "m4a")9 for i in 0...100 {10 self.hundredNum = Int.random(in: 0...9)11 self.tenNum = Int.random(in: 0...9)12 self.oneNum = Int.random(in: 0...9)13 14 DispatchQueue.main.sync {15 self.hundred.text = String(self.hundredNum)16 self.ten.text = String(self.tenNum)17 self.one.text = String(self.oneNum)18 }19 20 Thread.sleep(forTimeInterval: 0.05)21 }22 self.musicPlayer.pause()23 self.i = 124 25 }26 27 }28

試したこと・調べたこと

上記の詳細・結果

@IBAction func lotteryStart(_ sender: Any) {
lottery()
print("非同期処理中")
}

@IBAction func lotteryStart(_ sender: Any) {
while i < 360 {
lottery()
print("非同期処理中")
}

とすると、今度は3桁の数字が高速で動かなくなってしまいました。

補足

特になし

コメントを投稿

0 コメント