| | |
| | | class HomeListenFight_lesson_1_VC: BaseVC { |
| | | |
| | | private var viewModel = FightAnswerViewModel() |
| | | private var listen1Model:Listen1Model! |
| | | private var randomElement:Listen1SubModel? |
| | | private var page:Int! |
| | | var rootViewModel:HomeListenFightViewModel! |
| | | |
| | | private lazy var menuView:StudyHandleView = { |
| | | let menu = StudyHandleView.jq_loadNibView() |
| | | menu.listenType = .lesson1 |
| | | return menu |
| | | }() |
| | | private var menuView:StudyHandleView = StudyHandleView.jq_loadNibView() |
| | | |
| | | private lazy var collectionView:UICollectionView = { |
| | | let flowLayout = UICollectionViewFlowLayout() |
| | |
| | | return collection |
| | | }() |
| | | |
| | | required init(page:Int,listen1Model:Listen1Model){ |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.page = page |
| | | self.listen1Model = listen1Model |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | navigationItem.titleView = UIView() |
| | | collectionView.reloadData() |
| | | |
| | | menuView.listenType = .lesson1 |
| | | |
| | | // collectionView.isUserInteractionEnabled = false |
| | | //制造随机 |
| | | randomElement = listen1Model.subjectList.randomElement() |
| | | menuView.vioceSoundUrl = randomElement?.correct |
| | | |
| | | VoicePlayer.share().playEnd {[weak self] in |
| | | self?.menuView.reset() |
| | | } |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | guard let index = index else { return } |
| | | |
| | | //判断选中是否正确逻辑 |
| | | |
| | | if let cell = self?.collectionView.dequeueReusableCell(withReuseIdentifier: "_ListenFight_lesson_1_CCell", for: index) as? ListenFight_lesson_1_CCell{ |
| | | var answer:Fight_lessonType = .none |
| | | |
| | | answer = .success |
| | | if self?.randomElement?.id == self?.listen1Model.subjectList[index.row].id{ |
| | | answer = .success |
| | | self?.rootViewModel.correctNum += 1 |
| | | }else{ |
| | | answer = .fail |
| | | self?.rootViewModel.errorNum += 1 |
| | | } |
| | | |
| | | switch answer { |
| | | case .success: |
| | |
| | | self?.answerSuccess(cell) |
| | | case .fail: |
| | | self?.viewModel.answerType.accept(.fail) |
| | | self?.answerFail() |
| | | // self?.collectionView.isUserInteractionEnabled = false |
| | | self?.answerFail(errorSound: self?.listen1Model.subjectList[index.row].error) |
| | | default:break |
| | | } |
| | | } |
| | |
| | | //回答正确 |
| | | private func answerSuccess(_ cell:ListenFight_lesson_1_CCell){ |
| | | menuView.snp.removeConstraints() |
| | | collectionView.isUserInteractionEnabled = false |
| | | // collectionView.isUserInteractionEnabled = false |
| | | let v = cell.view_topHandle.convert(cell.bounds, to: self.view) |
| | | UIView.animate(withDuration: 0.3) { |
| | | self.menuView.snp.updateConstraints { make in |
| | |
| | | self.collectionView.reloadData() |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+2){ |
| | | NotificationCenter.default.post(name: NextLession_Noti, object: nil) |
| | | self.collectionView.isUserInteractionEnabled = true |
| | | // self.collectionView.isUserInteractionEnabled = true |
| | | self.viewModel.answerType.accept(.none) |
| | | self.viewModel.selectIndex.accept(nil) |
| | | self.rootViewModel.answerItems[self.page] = self.listen1Model |
| | | } |
| | | } |
| | | } |
| | | |
| | | private func answerFail(){ |
| | | private func answerFail(errorSound:String?){ |
| | | self.collectionView.reloadData() |
| | | VoicePlayer.share().playerAt(url: errorSound) |
| | | } |
| | | } |
| | | |
| | |
| | | }else{ |
| | | cell.setState(state: .none) |
| | | } |
| | | cell.setListen1SubModel(listen1Model.subjectList[indexPath.row]) |
| | | return cell |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
| | | return 4 |
| | | return min(4,listen1Model.subjectList.count) |
| | | } |
| | | } |