javascript - 使用 Javascript 设置 SVG 填充
问题描述
我正在尝试使用麦克风中的音频更改 SVG 图像的颜色。
我已经编写了逻辑,SVG 元素上的颜色已更新,但视觉上没有任何变化。
window.onload = function () {
if (navigator.getUserMedia) {
navigator.getUserMedia(
{ audio: true },
(stream) => {
var context = new AudioContext();
var src = context.createMediaStreamSource(stream);
var analyser = context.createAnalyser();
var svg = document.querySelector("#rangoli");
src.connect(analyser);
analyser.connect(context.destination);
analyser.fftSize = 256;
var bufferLength = analyser.frequencyBinCount;
var dataArray = new Uint8Array(bufferLength);
function renderFrame() {
requestAnimationFrame(renderFrame);
analyser.getByteFrequencyData(dataArray);
for (var i = 0; i < bufferLength; i++) {
barHeight = dataArray[i] / 2;
var r = barHeight + 25 * (i / bufferLength);
var g = 250 * (i / bufferLength);
var b = 50;
svg.setAttribute("fill", `rgb(${r}, ${g}, ${b})`);
}
}
renderFrame();
},
() => console.log("Error")
);
}
};
这是一个 CodePen 演示: https ://codepen.io/GR8z/pen/qBjopZG
解决方案
推荐阅读
- inno-setup - 缩放图像在欢迎页面中不可见
- python - 如何使用 Telethon 在电报中搜索群组和频道?
- cplex - CPLEX:使用 dvar 的分配值对数组进行索引
- excel - 无法使用表达式自动过滤日期列
- java - 我将某些项目存储在我的缓存中,这些项目太昂贵而无法实时查询。如何更新这些缓存元素?
- android - Android Retrofit @Header 和 @Field 一起使用?
- ios - 显示下拉表时的自动布局问题
- python - 从轮廓中删除背景
- ruby-on-rails - `method_missing':模型的未定义方法`devise'(调用'Model.connection'建立连接):类(NoMethodError)
- javascript - 慢慢地自动滚动内容到元素内部