Ios 如何编写一个始终显示文本、具有播放、暂停、下一步、上一步功能的程序?
我制作了一个文本播放器,在一段时间后用一种语言显示短语,这是一个英语翻译,使用mp3大声播放短语。有播放、暂停、下一步、上一步按钮 我写了代码,里面有一些bug:Ios 如何编写一个始终显示文本、具有播放、暂停、下一步、上一步功能的程序?,ios,swift,Ios,Swift,我制作了一个文本播放器,在一段时间后用一种语言显示短语,这是一个英语翻译,使用mp3大声播放短语。有播放、暂停、下一步、上一步按钮 我写了代码,里面有一些bug: class Sentence: Codable { var id: Int var rus: String var eng: String var link: String init(id: Int, rus: String, eng: String, link: String) {
class Sentence: Codable {
var id: Int
var rus: String
var eng: String
var link: String
init(id: Int, rus: String, eng: String, link: String) {
self.id = id
self.rus = rus
self.eng = eng
self.link = link
}
}
class WordsViewController: UIViewController {
var sentences: [Sentence] = [Sentence]()
var isPlayTouch = false
var isIncrement = false
var speed: Double = 1.5
var position: Int = 0
@objc func playAction() {
self.isPlayTouch = true
if sentences.count > 0 {
let duration = self.getDurationAudio(link: self.sentences[self.position].link)
DispatchQueue.global().async {
if self.isPlayTouch {
Thread.sleep(forTimeInterval: duration * self.speed)
if self.isPlayTouch {
DispatchQueue.main.async {
self.playSound()
self.wordsView.sentence.text = self.sentences[self.position].eng
DispatchQueue.global().async {
if self.isPlayTouch {
Thread.sleep(forTimeInterval: duration)
DispatchQueue.main.async {
if self.isPlayTouch {
if self.position == self.sentences.count - 1 {
self.pauseAction()
if !self.isIncrement {
self.isIncrement = true
}
} else {
if self.isPlayTouch {
Thread.sleep(forTimeInterval: 0.5)
if self.isPlayTouch {
self.position = self.position + 1
self.setText()
if self.isPlayTouch {
self.playAction()
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
- 按暂停按钮延迟一段时间后,立即按播放列表,会同时播放两个短语,这是由于检查了isPlayTouch变量
告诉我如何编写此功能?15
}
彼此之后都是可怕的。这样的代码很难阅读和理解(也很难修复)。我会在不使用DispatchQueue的情况下重写代码,直到它正常工作。这是代码的一部分。只是复制是行不通的15}
彼此之后是可怕的。这样的代码很难阅读和理解(也很难修复)。我会在不使用DispatchQueue的情况下重写代码,直到它正常工作。这是代码的一部分。只是抄袭是行不通的