実現したいこと
ビンゴなどの抽選数字のように、ランダムな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 = 1 24 25 } 26 27 } 28
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
@IBAction func lotteryStart(_ sender: Any) {
lottery()
print("非同期処理中")
}
を
@IBAction func lotteryStart(_ sender: Any) {
while i < 360 {
lottery()
print("非同期処理中")
}
}
とすると、今度は3桁の数字が高速で動かなくなってしまいました。
補足
特になし

回答1件
あなたの回答
tips
プレビュー