fix
无故事王国
2024-06-13 5c9191f42013d24360a3ef9e7ddd701c5a1a6209
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift
@@ -38,9 +38,8 @@
                        return label
            }()
            private lazy var view_studyHandleView:StudyHandleView = {
                        let studyHandleView = StudyHandleView.jq_loadNibView()
                        studyHandleView.view_choose.isHidden = true
            private lazy var view_studyHandleView:VoiceHandleView = {
                        let studyHandleView = VoiceHandleView()
                        return studyHandleView
            }()
@@ -58,14 +57,16 @@
            }()
            private var timer:Timer?
            private var times:Int = 60
            private var times:Int = 10
            private var voicePlayer = VoicePlayer.share()
            private var answerSet = Set<Listen1SubModel>()
            private var currentAnswer:Listen1SubModel?{
                        didSet{
                                    if let v = currentAnswer{
                                                view_studyHandleView.vioceSoundUrl = v.correct
                                                view_studyHandleView.voicePlayer.playerAt(url: v.correct)
                                                view_studyHandleView.playUrl = v.correct
                                                voicePlayer.playerAt(url: v.correct)
                                                viewModel.answerType.accept(.none)
                                    }
                        }
            }
@@ -79,22 +80,38 @@
                        fatalError("init(coder:) has not been implemented")
            }
            override func viewDidDisappear(_ animated: Bool) {
                        super.viewDidDisappear(animated)
                        timer?.invalidate()
                        voicePlayer.playerEnd()
            }
    override func viewDidLoad() {
        super.viewDidLoad()
                        #if DEBUG
                        listen1Model?.data?.time = 60
                        #endif
                        if  listen1Model != nil{
                                    times = listen1Model?.data?.time ?? 10
                                    collectionView.reloadData()
                                    label_hint.isHidden = false
                                    label_hint.text = "\(totalCount)"
                                    if timer == nil{startTimer()}
                                    label_hint.text = "准备听题"
                                    for v in listen1Model?.subjectList ?? []{
                                                answerSet.insert(v)
                                    }
                                    print("--->开始答题:剩余:\(answerSet.count)")
                                    currentAnswer = answerSet.randomElement() //随机
                                    DispatchQueue.main.asyncAfter(deadline: .now()+3) {
                                                self.currentAnswer = self.answerSet.randomElement() //随机
                                                if self.timer == nil{self.startTimer()}
                                    }
                        }
                        voicePlayer.delegate = self
    }
            override func setUI() {
@@ -168,11 +185,12 @@
                                    if let c = currentAnswer{
                                                answerSet.remove(c)
                                    }
                                                currentAnswer = answerSet.randomElement() //随机
                                             times = listen1Model?.data?.time ?? 0
                                             timer?.fireDate = .distantPast
                                             totalCount += 1
                                             label_class.text = "\(totalCount)"
                                    currentAnswer = answerSet.randomElement() //随机
                                    times = listen1Model?.data?.time ?? 0
                                    timer?.fireDate = .distantPast
                                    totalCount += 1
                                    rootViewModel.errorNum += 1
                                    label_class.text = "\(totalCount)"
                                    //答题完成
                                    if self.answerSet.count == 0{completeQuestion()}
@@ -202,22 +220,15 @@
                                                            let y = abs(newRect.origin.y) + 99 + 5
                                                            let layout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
                                                            let copyView = view_studyHandleView.copyView()
                                                            copyView.view_choose.isHidden = true
                                                            view.addSubview(copyView)
                                                            UIView.animate(withDuration: 0.5) {
                                                                        copyView.frame = CGRect(x: x, y: y, width: layout.itemSize.width - 10, height: 40)
                                                            } completion: { _ in
                                                                        DispatchQueue.main.asyncAfter(deadline: .now()+0.5) {
                                                                                    self.viewModel.answerType.accept(.none)
                                                                                    self.collectionView.reloadData()
                                                                                    self.times = self.listen1Model?.data?.time ?? 10
                                                                                    self.totalCount += 1
                                                                                    self.label_class.text = "\(self.totalCount)"
                                                                                    self.answerSet.remove(self.currentAnswer!)
                                                                                    self.currentAnswer = self.answerSet.randomElement()
                                                                                    print("--->下一题:\(self.currentAnswer?.id ?? 0) 剩余\(self.answerSet.count)  计数:\(self.totalCount)")
//                                                                                    self.collectionView.reloadData()
                                                                                    self.voicePlayer.playerAt(url: self.currentAnswer?.correct)
                                                                                    self.timer?.fireDate = .distantFuture
                                                                                    //答题完成
                                                                                    if self.answerSet.count == 0{
                                                                                                self.completeQuestion()
@@ -230,6 +241,9 @@
                                                rootViewModel.errorNum += 1
                                                viewModel.answerType.accept(.fail)
                                                collectionView.reloadData()
                                                DispatchQueue.main.asyncAfter(deadline: .now()+3) {
                                                            self.currentAnswer = self.answerSet.randomElement()
                                                }
                                    case .none:
                                                break
                        }
@@ -273,3 +287,32 @@
                        return listen1Model?.subjectList.count ?? 0
            }
}
extension HomeListenGame_1_VC:VoicePlayerDelegate{
            func playComplete() {
                        view_studyHandleView.resetView()
                        if viewModel.answerType.value == .success{
                                    self.label_hint.text = "准备请听下一题"
                                    DispatchQueue.main.asyncAfter(deadline: .now()+3) {
                                                self.times = self.listen1Model?.data?.time ?? 10
#if DEBUG
                                                self.times = 60
#endif
                                                self.totalCount += 1
                                                self.rootViewModel.correctNum += 1
                                                self.label_class.text = "\(self.totalCount)"
                                                self.answerSet.remove(self.currentAnswer!)
                                                self.currentAnswer = self.answerSet.randomElement()
                                                self.viewModel.answerType.accept(.none)
                                                print("--->下一题:\(self.currentAnswer?.id ?? 0) 剩余\(self.answerSet.count)  计数:\(self.totalCount)")
                                                self.timer?.fireDate = .distantPast
                                    }
                        }
            }
            func playing() {
                        view_studyHandleView.playing()
            }
}