| | |
| | | private var playVoiceAt:Int? //播放声音的View |
| | | private var playVoiceRealAt:Int? //播放声音的View -被乱序后,真实Index |
| | | var rootViewModel:HomeListenFightViewModel! |
| | | private var voicePlayer = VoicePlayer.share() |
| | | |
| | | private lazy var collectionView:UICollectionView = { |
| | | let flowLayout = UICollectionViewFlowLayout() |
| | |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.page = page |
| | | self.listen1Model = listen1Model |
| | | self.listen1Model.subjectList.shuffle() |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | |
| | | super.viewDidLoad() |
| | | |
| | | collectionView.reloadData() |
| | | } |
| | | |
| | | |
| | | override func viewDidAppear(_ animated: Bool) { |
| | | super.viewDidAppear(animated) |
| | | voicePlayer.delegate = self |
| | | } |
| | | |
| | | override func viewDidDisappear(_ animated: Bool) { |
| | | super.viewDidDisappear(animated) |
| | | voicePlayer.delegate = nil |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | } |
| | | |
| | | override func setRx() { |
| | | // viewModel.selectIndex.subscribe(onNext: {indexPath in |
| | | // if let index = indexPath{ |
| | | // |
| | | // } |
| | | // }).disposed(by: disposeBag) |
| | | |
| | | } |
| | | |
| | | func restore(){ |
| | | viewModel.answerType.accept(.none) |
| | | answterCount = 0 |
| | | playVoiceAt = nil |
| | | playVoiceRealAt = nil |
| | | |
| | | for subV in view.subviews{ |
| | | if subV is VoiceHandleView{ |
| | | subV.removeFromSuperview() |
| | | } |
| | | } |
| | | setUI() |
| | | collectionView.reloadData() |
| | | } |
| | | |
| | | private func setAnswerStackView(){ |
| | |
| | | } |
| | | } |
| | | |
| | | var tempArray = [StudyHandleView]() |
| | | var tempArray = [VoiceHandleView]() |
| | | for (i,value) in listen1Model.subjectList.enumerated(){ |
| | | let answerView = StudyHandleView.jq_loadNibView() |
| | | let answerView = VoiceHandleView() |
| | | answerView.listenType = .lesson5 |
| | | answerView.view_choose.isHidden = true |
| | | answerView.tag = 1000+i |
| | | answerView.playAt {[weak self] index in |
| | | print("--->\(index)--\(answerView.frame.origin.x / 248)") |
| | |
| | | self?.playVoiceAt = index - 1000 |
| | | self?.showHintText(true) |
| | | } |
| | | answerView.vioceSoundUrl = value.correct |
| | | answerView.playUrl = value.correct |
| | | answerView.snp.makeConstraints { make in |
| | | make.width.equalTo(159) |
| | | make.height.equalTo(52) |
| | |
| | | answerType = .fail |
| | | } |
| | | |
| | | let tempSubV = stackView.arrangedSubviews[self.playVoiceRealAt!] as! StudyHandleView |
| | | let tempSubV = stackView.arrangedSubviews[self.playVoiceRealAt!] as! VoiceHandleView |
| | | |
| | | switch answerType { |
| | | case .success: |
| | | answterCount += 1 |
| | | rootViewModel.correctNum += 1 |
| | | viewModel.answerType.accept(.success) |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+0.4) { |
| | | let copyView = tempSubV.copyView() |
| | | copyView.view_choose.isHidden = true |
| | | tempSubV.alpha = 0 |
| | | let newRect = tempSubV.convert(tempSubV.bounds, to: self.view) |
| | | copyView.frame = CGRect(origin: newRect.origin, size: CGSize(width: 159, height: 52)) |
| | | self.view.addSubview(copyView) |
| | | |
| | | let copyView = tempSubV.copyView() |
| | | copyView.listenType = .lesson5 |
| | | copyView.playUrl = selectAnswer.correct |
| | | let newRect = tempSubV.convert(tempSubV.bounds, to: self.view) |
| | | copyView.frame = CGRect(origin: newRect.origin, size: CGSize(width: 159, height: 52)) |
| | | self.view.addSubview(copyView) |
| | | tempSubV.alpha = 0 |
| | | |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+0.4) { |
| | | |
| | | //获取Cell的顶部试图 |
| | | let flowLayout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout |
| | |
| | | copyView.frame = CGRect(origin: newRect1.origin, size: CGSize(width: flowLayout.itemSize.width - 10 , height: 40)) |
| | | |
| | | }completion: { _ in |
| | | copyView.playingAction() |
| | | self.playVoiceRealAt = nil |
| | | self.playVoiceAt = nil |
| | | |
| | | if self.answterCount == 4{ |
| | | self.rootViewModel.answerItems[self.page] = self.listen1Model |
| | | VoicePlayer.share().playerEnd() |
| | | NotificationCenter.default.post(name: NextLession_Noti, object: nil) |
| | | } |
| | | self.collectionView.reloadData() |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | extension HomeListenFight_lesson_5_VC:VoicePlayerDelegate{ |
| | | func playComplete() { |
| | | for subV in stackView.arrangedSubviews as! [VoiceHandleView]{ |
| | | subV.resetView() |
| | | } |
| | | |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+0.4) { |
| | | if self.answterCount >= 4{ |
| | | self.rootViewModel.answerItems[self.page] = self.listen1Model |
| | | self.voicePlayer.playerEnd() |
| | | NotificationCenter.default.post(name: NextLession_Noti, object: nil) |
| | | } |
| | | } |
| | | } |
| | | |
| | | func playing() { |
| | | |
| | | } |
| | | |
| | | } |