ソースを参照

1,不修改selectedTotalDuration 传入的总时长,使用临时变量

jsonwang 3 年 前
コミット
58459197ad

+ 17 - 9
BFFramework/Classes/Stuckpoint/Controller/PQStuckPointEditerController.swift

@@ -1225,7 +1225,6 @@ extension PQStuckPointEditerController {
 
         // 已经取到的视频素材总长度,用于和原视频素材时长做对比,不够多加一个点
         var useAssestDuration: Float = 0.0
-        selectedTotalDuration = 0.0
         switch model {
         case .createStickersModelPoint: // 跳跃卡点
             stuckPointsTemp = getUsedStuckPoint(seed: stuckPointMusicData?.speed ?? 0)
@@ -1366,27 +1365,36 @@ extension PQStuckPointEditerController {
             break
         }
         // 拼接图片所使用的时长
-        // 二,最一个卡点在原数组中的位置,从这个位置开始拼接图片所要使用的卡点
+        // 选择一组图片 按图片数量计算卡点的总时长
+        var oneSelectImageDuration:Float = 0.0
         if selectedImageDataCount > 0 {
+            //二,最一个卡点在原数组中的位置,从这个位置开始拼接图片所要使用的卡点
             var pointIndex = stuckPointsTemp.firstIndex(where: { (point) -> Bool in
                 (point == (finallyStuckPoints.last ?? 0).truncatingRemainder(dividingBy: (stuckPointsTemp.last ?? 0)))
             })
             pointIndex = (pointIndex ?? 0) + 1
 
+            var tempStartTime:Float = -1
+            var tempEndTime:Float = -1
             for i in 0 ... selectedImageDataCount {
                 let a = stuckPointsTemp[(i + Int(pointIndex ?? 0)) % stuckPointsTemp.count]
                 let b = Float((i + Int(pointIndex ?? 0)) / stuckPointsTemp.count) * (stuckPointsTemp.first ?? 0)
                 finallyStuckPoints.append(a + b)
+                if(tempStartTime == -1){
+                    tempStartTime = a + b
+                }
+                tempEndTime = a + b
+               
             }
-            selectedTotalDuration = Float64(((finallyStuckPoints.last ?? 0) - (finallyStuckPoints.first ?? 0)))
+            oneSelectImageDuration = tempEndTime - tempStartTime
         }
 
         // 3)素材全是图片时如果时长 < 10s要做轮播处理
-        if selectedDataCount == selectedImageDataCount && selectedTotalDuration < 10 {
-            // 已经设置过循环次数
+        if selectedDataCount == selectedImageDataCount && oneSelectImageDuration < 10 {
+            //设置 UI类型为循环模式
             speedSettingView.viewType = 3
 
-            // lastCyclesSelectIndex 应该是手动设置的值
+            // lastCyclesSelectIndex != -1 已经设置过循环次数 应该是手动设置的值
             if lastCyclesSelectIndex != -1 {
                 if(lastCyclesSelectIndex != 0){
                     for i in 0 ... lastCyclesSelectIndex - 1{
@@ -1404,7 +1412,7 @@ extension PQStuckPointEditerController {
              
             } else {
                 lastCyclesSelectIndex = 1
-                while selectedTotalDuration < 10 {
+                while oneSelectImageDuration < 10 {
                     // 不够10S 时 一次加图片数量的卡点数
                     var pointIndex = stuckPointsTemp.firstIndex(where: { (point) -> Bool in
                         (point == (finallyStuckPoints.last ?? 0).truncatingRemainder(dividingBy: (stuckPointsTemp.last ?? 0)))
@@ -1415,8 +1423,8 @@ extension PQStuckPointEditerController {
                         let b = Float((i + Int(pointIndex ?? 0)) / stuckPointsTemp.count) * (stuckPointsTemp.first ?? 0)
                         finallyStuckPoints.append(a + b)
                     }
-
-                    selectedTotalDuration = Float64((finallyStuckPoints.last ?? 0) - (finallyStuckPoints.first ?? 0))
+                    oneSelectImageDuration = Float((finallyStuckPoints.last ?? 0) - (finallyStuckPoints.first ?? 0))
+ 
                     lastCyclesSelectIndex = lastCyclesSelectIndex + 1
                 }
                 speedSettingView.setSelectItem(index: lastCyclesSelectIndex, isSettingPlayer: false)