Jelajahi Sumber

切换音乐后 不重置原有设置参数。

jsonwang 3 tahun lalu
induk
melakukan
6e78abbea8

+ 97 - 92
BFFramework/Classes/Stuckpoint/Controller/PQStuckPointEditerController.swift

@@ -494,7 +494,7 @@ class PQStuckPointEditerController: PQBaseViewController {
         // 1,音乐面板点击了使用
         stuckPointMusicData = musicData
         // 2,同步最新音乐数据
-        synchroMusicInfoData()
+        synchroMusicInfoData(resetSelectIndex: false)
 
         // 3,更新音乐标题UI
         let nameWidth: CGFloat = sizeWithText(text: "\(stuckPointMusicData?.musicName ?? "")", font: UIFont.systemFont(ofSize: 13), size: CGSize(width: (view.frame.width) - ((cDefaultMargin * 6 + 16 * 2) * 2) - (25 + cDefaultMargin * 3), height: cDefaultMargin * 3)).width
@@ -1641,7 +1641,7 @@ extension PQStuckPointEditerController {
 extension PQStuckPointEditerController {
     /// 同步音乐相关数据
     /// - Returns: <#description#>
-    func synchroMusicInfoData() {
+    func synchroMusicInfoData(resetSelectIndex:Bool = true) {
         if (stuckPointMusicData?.rhythmSdata.count ?? 0) <= 0 {
             if synchroMarskView.superview == nil {
                 UIApplication.shared.keyWindow?.addSubview(synchroMarskView)
@@ -1663,14 +1663,14 @@ extension PQStuckPointEditerController {
                                 self?.isSynchroMusicInfoSuccess = true
                                 self?.stuckPointMusicData?.localPath = filePath?.replacingOccurrences(of: documensDirectory, with: "")
                                 // 处理所有数据完成
-                                self?.dealWithDataSuccess()
+                                self?.dealWithDataSuccess(resetSelectIndex: resetSelectIndex)
                             }
                             self?.synchroMarskView.removeMarskView()
                         }
                     } else {
                         self?.isSynchroMusicInfoSuccess = true
                         // 处理所有数据完成
-                        self?.dealWithDataSuccess()
+                        self?.dealWithDataSuccess(resetSelectIndex: resetSelectIndex)
                     }
                     // 添加子视图
                     self?.addSubViews()
@@ -1689,7 +1689,7 @@ extension PQStuckPointEditerController {
                     self?.isSynchroMusicInfoSuccess = true
                     self?.stuckPointMusicData?.localPath = filePath?.replacingOccurrences(of: documensDirectory, with: "")
                     // 处理所有数据完成
-                    self?.dealWithDataSuccess()
+                    self?.dealWithDataSuccess(resetSelectIndex: resetSelectIndex)
                 } else {
                     self?.synchroMarskView.removeMarskView()
 //                    PQUploadRemindView.showUploadRemindView(title: nil, attributedTitle: NSAttributedString(string: "加载音乐失败,请重新选择音乐"), summary: "", confirmTitle: nil) { [weak self] _, _ in
@@ -1700,7 +1700,7 @@ extension PQStuckPointEditerController {
         } else {
             isStuckPointDataSuccess = true
             // 处理所有数据完成
-            dealWithDataSuccess()
+            dealWithDataSuccess(resetSelectIndex: resetSelectIndex)
         }
     }
 
@@ -1791,7 +1791,8 @@ extension PQStuckPointEditerController {
 
     /// 处理所有数据完成
     /// - Returns: <#description#>
-    func dealWithDataSuccess() {
+    /// resetSelectIndex : 是否重置用户选择的速度设置,在编辑界面切换音乐时不重置
+    func dealWithDataSuccess(resetSelectIndex:Bool = true) {
         BFLog(message: "三组参数:\(isSynchroMusicInfoSuccess)  \(isStuckPointDataSuccess) \(isExportVideosSuccess)")
         if !isSynchroMusicInfoSuccess || !isStuckPointDataSuccess || !isExportVideosSuccess {
             return
@@ -1800,100 +1801,104 @@ extension PQStuckPointEditerController {
         createPorjectData()
         BFLog(message: "界面编辑界面时参数 选择素材时长:\(selectedTotalDuration) 选择素材总数:\(selectedDataCount) 选择图片总数\(selectedImageDataCount) 再创建类型:\(String(describing: reCreateVideoData?.rhythmMode))")
 
-        // 1 生成默认参数值
-        /*
-         - 当素材总时长∈[0-6)s 时,提示推荐仅配乐模式 or 快慢速模式
-         - 当素材总时长∈[6-80)s 时,卡点抛留倍数为1x,即留1抛1
-         - 当素材总时长∈[80,120)s 时,卡点抛留倍数为2x,即留1抛2
-         - 当素材总时长∈[120,160)s 时,卡点抛留倍数为3x,即留1抛3
-         - 当素材总时长∈[160,200)s 时,卡点抛留倍数为4x,即留1抛4
-         - 当素材总时长∈[200,240)s 时,卡点抛留倍数为5x,即留1抛5
-         - 当素材总时长∈[240,∞)s 时,卡点抛留倍数为5x,即留1抛5
-         */
-        // 1.1) 生成跳跃卡点的默认值
-        if selectedTotalDuration >= 6 && selectedTotalDuration < 80 {
-            lastJumpSpeedSelectIndex = 0
-        } else if selectedTotalDuration >= 80 && selectedTotalDuration < 120 {
-            lastJumpSpeedSelectIndex = 1
-        } else if selectedTotalDuration >= 120 && selectedTotalDuration < 160 {
-            lastJumpSpeedSelectIndex = 2
-        } else if selectedTotalDuration >= 160 && selectedTotalDuration < 200 {
-            lastJumpSpeedSelectIndex = 3
-        } else if (selectedTotalDuration >= 200 && selectedTotalDuration < 240) || selectedTotalDuration >= 240 {
-            lastJumpSpeedSelectIndex = 4
-        }
-
-        /* 默认进入快慢速模式
-         - 当素材总时长∈[120,144]s 时,快慢速处理方式:快速为 6x,慢速为 1.2x,效果是快&快
-         - 当素材总时长∈[70,120)s 时,快慢速处理方式:快速为5x,慢速为 1x,效果是快&正常
-         - 当素材总时长∈[56,70)s 时,快慢速处理方式:快速为3x,慢速为 0.5x,效果是快&慢
-         - 当素材总时长∈[17.5,56)s 时,快慢速处理方式:快速为 2.4x,慢速为 0.4x,效果是快&慢
-         - 当素材总时长∈[10.5,17.5)s 时,快慢速处理方式:快速为 1.8x,慢速为 0.3x,效果是快&慢
-         - 当素材总时长∈(0,10.5)s 时,快慢速处理方式:快速为 1x,慢速为 0.2x,效果是正常&慢
+        if(resetSelectIndex){
+            // 1 生成默认参数值
+            /*
+             - 当素材总时长∈[0-6)s 时,提示推荐仅配乐模式 or 快慢速模式
+             - 当素材总时长∈[6-80)s 时,卡点抛留倍数为1x,即留1抛1
+             - 当素材总时长∈[80,120)s 时,卡点抛留倍数为2x,即留1抛2
+             - 当素材总时长∈[120,160)s 时,卡点抛留倍数为3x,即留1抛3
+             - 当素材总时长∈[160,200)s 时,卡点抛留倍数为4x,即留1抛4
+             - 当素材总时长∈[200,240)s 时,卡点抛留倍数为5x,即留1抛5
+             - 当素材总时长∈[240,∞)s 时,卡点抛留倍数为5x,即留1抛5
+             */
+            // 1.1) 生成跳跃卡点的默认值
+            if selectedTotalDuration >= 6 && selectedTotalDuration < 80 {
+                lastJumpSpeedSelectIndex = 0
+            } else if selectedTotalDuration >= 80 && selectedTotalDuration < 120 {
+                lastJumpSpeedSelectIndex = 1
+            } else if selectedTotalDuration >= 120 && selectedTotalDuration < 160 {
+                lastJumpSpeedSelectIndex = 2
+            } else if selectedTotalDuration >= 160 && selectedTotalDuration < 200 {
+                lastJumpSpeedSelectIndex = 3
+            } else if (selectedTotalDuration >= 200 && selectedTotalDuration < 240) || selectedTotalDuration >= 240 {
+                lastJumpSpeedSelectIndex = 4
+            }
 
-         */
-        // 1.2)生成快慢速的默认值
-        if selectedTotalDuration >= 120 && selectedTotalDuration <= 144 || selectedTotalDuration > 144 {
-            lastSpeedSelectIndex = 5
-        } else if selectedTotalDuration >= 70 && selectedTotalDuration < 120 {
-            lastSpeedSelectIndex = 4
-        } else if selectedTotalDuration >= 56 && selectedTotalDuration < 70 {
-            lastSpeedSelectIndex = 3
-        } else if selectedTotalDuration >= 17.5 && selectedTotalDuration < 56 {
-            lastSpeedSelectIndex = 2
-        } else if selectedTotalDuration >= 10.5 && selectedTotalDuration < 17.5 {
-            lastSpeedSelectIndex = 1
-        } else if selectedTotalDuration > 0 && selectedTotalDuration < 10.5 {
-            lastSpeedSelectIndex = 0
-        }
-
-        // 如果是再创作进来的安原视频的模式
-        if reCreateVideoData != nil {
-            BFLog(message: "是再创作进来的 \(reCreateVideoData!.rhythmMode)")
-            switch reCreateVideoData!.rhythmMode {
-            case 1:
-                editModelClick(sender: jumpPointBtn, reportLog: false)
-                break
-            case 2:
-                editModelClick(sender: speedStuckBtn, reportLog: false)
+            /* 默认进入快慢速模式
+             - 当素材总时长∈[120,144]s 时,快慢速处理方式:快速为 6x,慢速为 1.2x,效果是快&快
+             - 当素材总时长∈[70,120)s 时,快慢速处理方式:快速为5x,慢速为 1x,效果是快&正常
+             - 当素材总时长∈[56,70)s 时,快慢速处理方式:快速为3x,慢速为 0.5x,效果是快&慢
+             - 当素材总时长∈[17.5,56)s 时,快慢速处理方式:快速为 2.4x,慢速为 0.4x,效果是快&慢
+             - 当素材总时长∈[10.5,17.5)s 时,快慢速处理方式:快速为 1.8x,慢速为 0.3x,效果是快&慢
+             - 当素材总时长∈(0,10.5)s 时,快慢速处理方式:快速为 1x,慢速为 0.2x,效果是正常&慢
 
-                break
-            case 3:
-                editModelClick(sender: onlyMusicBtn, reportLog: false)
-                break
-            default: break
+             */
+            // 1.2)生成快慢速的默认值
+            if selectedTotalDuration >= 120 && selectedTotalDuration <= 144 || selectedTotalDuration > 144 {
+                lastSpeedSelectIndex = 5
+            } else if selectedTotalDuration >= 70 && selectedTotalDuration < 120 {
+                lastSpeedSelectIndex = 4
+            } else if selectedTotalDuration >= 56 && selectedTotalDuration < 70 {
+                lastSpeedSelectIndex = 3
+            } else if selectedTotalDuration >= 17.5 && selectedTotalDuration < 56 {
+                lastSpeedSelectIndex = 2
+            } else if selectedTotalDuration >= 10.5 && selectedTotalDuration < 17.5 {
+                lastSpeedSelectIndex = 1
+            } else if selectedTotalDuration > 0 && selectedTotalDuration < 10.5 {
+                lastSpeedSelectIndex = 0
             }
-            return
-        }
+            
+            // 如果是再创作进来的安原视频的模式
+            if reCreateVideoData != nil {
+                BFLog(message: "是再创作进来的 \(reCreateVideoData!.rhythmMode)")
+                switch reCreateVideoData!.rhythmMode {
+                case 1:
+                    editModelClick(sender: jumpPointBtn, reportLog: false)
+                    break
+                case 2:
+                    editModelClick(sender: speedStuckBtn, reportLog: false)
+
+                    break
+                case 3:
+                    editModelClick(sender: onlyMusicBtn, reportLog: false)
+                    break
+                default: break
+                }
+                return
+            } 
+             // 跳跃卡点不可用
+             if selectedTotalDuration < 6 && selectedDataCount != selectedImageDataCount {
+                 jumpPointBtn.setImage(UIImage().BF_Image(named: "jumpPoint_disable"), for: .normal)
+                 jumpPointBtn.setImage(UIImage().BF_Image(named: "jumpPoint_disable"), for: .selected)
+                 jumpPointBtnGif.isHidden = true
+             }
 
-        // 跳跃卡点不可用
-        if selectedTotalDuration < 6 && selectedDataCount != selectedImageDataCount {
-            jumpPointBtn.setImage(UIImage().BF_Image(named: "jumpPoint_disable"), for: .normal)
-            jumpPointBtn.setImage(UIImage().BF_Image(named: "jumpPoint_disable"), for: .selected)
-            jumpPointBtnGif.isHidden = true
-        }
+            /*
+             文档规则 https://w42nne6hzg.feishu.cn/docs/doccnQZm1uCfkU4QtJb5fLxYk4d#
+             */
+            // 2,根据所选择所有素材时长进入默认模式
+            // 全是图片
+            if selectedDataCount == selectedImageDataCount {
+                BFLog(message: "全是图片 \(selectedDataCount) \(selectedImageDataCount)")
 
-        /*
-         文档规则 https://w42nne6hzg.feishu.cn/docs/doccnQZm1uCfkU4QtJb5fLxYk4d#
-         */
-        // 2,根据所选择所有素材时长进入默认模式
-        // 全是图片
-        if selectedDataCount == selectedImageDataCount {
-            BFLog(message: "全是图片 \(selectedDataCount) \(selectedImageDataCount)")
+                // 默认进入跳跃卡点模式
+                editModelClick(sender: jumpPointBtn, reportLog: false)
 
-            // 默认进入跳跃卡点模式
-            editModelClick(sender: jumpPointBtn, reportLog: false)
+            } else {
+                // 默认进入快慢速模式
+                if selectedTotalDuration > 0 && selectedTotalDuration <= 144 {
+                    editModelClick(sender: speedStuckBtn, reportLog: false)
 
-        } else {
-            // 默认进入快慢速模式
-            if selectedTotalDuration > 0 && selectedTotalDuration <= 144 {
-                editModelClick(sender: speedStuckBtn, reportLog: false)
+                } else {
+                    // 默认进入卡点模式
+                    editModelClick(sender: jumpPointBtn, reportLog: false)
 
-            } else {
-//                // 默认进入卡点模式
-//                editModelClick(sender: jumpPointBtn, reportLog: false)
-                editModelClick(sender: lastEditModelBtn ?? jumpPointBtn, reportLog: false)
+                }
             }
+        }else{
+            editModelClick(sender: lastEditModelBtn ?? jumpPointBtn, reportLog: false)
         }
+  
     }
 }