黄琪勇 hai 11 meses
pai
achega
1dd34fc931

+ 36 - 18
src/page-instrument/view-evaluat-report/component/share-top/index.tsx

@@ -104,7 +104,7 @@ export default defineComponent({
 						shareData._plrl.on('pause', () => {
 							pauseVisualDraw()
 						});
-					}, 500); // 弹窗动画是0.25秒 这里用定时器 确保canvas 能获取到宽高
+					}, 600); // 弹窗动画是0.25秒 这里用定时器 确保canvas 能获取到宽高
 				}
 				shareData.isInitPlyr = true;
 			});
@@ -172,19 +172,33 @@ export default defineComponent({
 				ctx.fillRect(0, 0, w, h)
 			}
 			const requestAnimationFrameFun = () => {
-				requestAnimationFrame(() => {
-					//analyser?.getByteFrequencyData(dataArray)
-					draw(generateMixedData(48), canvasCtx, {
-						lineGap: 2,
-						canvWidth: width,
-						canvHeight: height,
-						canvFillColor: "transparent",
-						lineColor: "rgba(255, 255, 255, 0.3)"
-					})
-					if (!isPause) {
-						requestAnimationFrameFun()
-					}
-				})
+				// requestAnimationFrame(() => {
+				// 	//analyser?.getByteFrequencyData(dataArray)
+				// 	draw(generateMixedData(48), canvasCtx, {
+				// 		lineGap: 2,
+				// 		canvWidth: width,
+				// 		canvHeight: height,
+				// 		canvFillColor: "transparent",
+				// 		lineColor: "rgba(255, 255, 255, 0.3)"
+				// 	})
+				// 	if (!isPause) {
+				// 		requestAnimationFrameFun()
+				// 	}
+				// })
+        const _time = setInterval(() => {
+          if (isPause) {
+            clearInterval(_time)
+            return
+          }
+          //analyser?.getByteFrequencyData(dataArray)
+          draw(generateMixedData(42), canvasCtx, {
+            lineGap: 3,
+            canvWidth: width,
+            canvHeight: height,
+            canvFillColor: "transparent",
+            lineColor: "rgba(255, 255, 255, 0.3)"
+          })
+        }, 300);
 			}
 			let isPause = true
 			const playVisualDraw = () => {
@@ -216,12 +230,16 @@ export default defineComponent({
 		}
     function generateMixedData(size:number) {
       const dataArray = new Uint8Array(size);
-      const noiseAmplitude = 30;
-      const frequency = 0.1;
-      const amplitude = 128;
+      const baseNoiseAmplitude = 30;
+      const minFrequency = 0.01;
+      const maxFrequency = 0.2;
+      const minAmplitude = 50;
+      const maxAmplitude = 150;
       for (let i = 0; i < size; i++) {
-          const noise = Math.floor(Math.random() * noiseAmplitude);
+          const frequency = minFrequency + Math.random() * (maxFrequency - minFrequency);
+          const amplitude = minAmplitude + Math.random() * (maxAmplitude - minAmplitude);
           const wave = amplitude * (0.5 + 0.5 * Math.sin(frequency * i));
+          const noise = Math.floor(Math.random() * baseNoiseAmplitude) - baseNoiseAmplitude / 2;
           dataArray[i] = Math.min(255, Math.max(0, Math.floor(wave + noise)));
       }
       return dataArray;