feat: 优化“renderAudioVisualizer1”,增加四边线段
This commit is contained in:
@@ -814,15 +814,16 @@ window.addEventListener('DOMContentLoaded', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 计算平均音量
|
// 计算平均音量
|
||||||
let avgVolume = dataSum / audioBufferLength;
|
let avgVolume0 = dataSum / audioBufferLength;
|
||||||
|
let avgVolume1 = avgVolume0 / 255;
|
||||||
|
|
||||||
// 计算中心圆形半径(音量越高,圆形越大)
|
// 计算中心圆形半径(音量越高,圆形越大)
|
||||||
let centerCircleRadius = Math.min(CANVAS_WIDTH, CANVAS_HEIGHT) * 0.05 + (avgVolume / 255) * Math.min(CANVAS_WIDTH, CANVAS_HEIGHT) * 0.15;
|
let centerCircleRadius = Math.min(CANVAS_WIDTH, CANVAS_HEIGHT) * 0.05 + avgVolume1 * Math.min(CANVAS_WIDTH, CANVAS_HEIGHT) * 0.15;
|
||||||
|
|
||||||
// 绘制中心圆形
|
// 绘制中心圆形
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
ctx.arc(centerX, centerY, centerCircleRadius, 0, Math.PI * 2);
|
ctx.arc(centerX, centerY, centerCircleRadius, 0, Math.PI * 2);
|
||||||
ctx.fillStyle = `rgba(0, 255, 136, ${0.3 + (avgVolume / 255) * 0.7})`;
|
ctx.fillStyle = `rgba(0, 255, 136, ${0.2 + avgVolume1 * 0.8})`;
|
||||||
ctx.fill();
|
ctx.fill();
|
||||||
ctx.strokeStyle = '#00FF88';
|
ctx.strokeStyle = '#00FF88';
|
||||||
ctx.lineWidth = 2;
|
ctx.lineWidth = 2;
|
||||||
@@ -835,6 +836,27 @@ window.addEventListener('DOMContentLoaded', () => {
|
|||||||
ctx.lineWidth = 1;
|
ctx.lineWidth = 1;
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
|
|
||||||
|
// 绘制线段
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.strokeStyle = '#00CCFF';
|
||||||
|
ctx.lineWidth = 2;
|
||||||
|
// 上
|
||||||
|
ctx.moveTo(0, 1);
|
||||||
|
ctx.lineTo(avgVolume1 * CANVAS_WIDTH, 1);
|
||||||
|
ctx.stroke();
|
||||||
|
// 右
|
||||||
|
ctx.moveTo(CANVAS_WIDTH - 4, 0);
|
||||||
|
ctx.lineTo(CANVAS_WIDTH - 4, avgVolume1 * CANVAS_HEIGHT);
|
||||||
|
ctx.stroke();
|
||||||
|
// 下
|
||||||
|
ctx.moveTo(CANVAS_WIDTH, CANVAS_HEIGHT - 1);
|
||||||
|
ctx.lineTo(CANVAS_WIDTH - avgVolume1 * CANVAS_WIDTH, CANVAS_HEIGHT - 1);
|
||||||
|
ctx.stroke();
|
||||||
|
// 左
|
||||||
|
ctx.moveTo(4, CANVAS_HEIGHT);
|
||||||
|
ctx.lineTo(4, CANVAS_HEIGHT - avgVolume1 * CANVAS_HEIGHT);
|
||||||
|
ctx.stroke();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 渲染音频可视化内容 */
|
/** 渲染音频可视化内容 */
|
||||||
|
|||||||
Reference in New Issue
Block a user