javascript - 为一组声音元素jquery,javascript创建一个音频对象

标签 javascript jquery arrays audio

我目前有很多这样的声音元素

var AudioGood = document.createElement('audio');
AudioGood.controls = true;
AudioGood.src = 'sounds/good.wav';
AudioGood.volume=0.5;

var AudioWrong = document.createElement('audio');
AudioWrong.controls = true;
AudioWrong.src = 'sounds/wrong.wav';
AudioWrong.volume=0.5;

等等。我不喜欢那样。我试着做类似的东西

function track (name,controls,src,volume,loop){
    this.name = name;
    this.controls = controls;
    this.src = src;
    this.volume = volume;
    this.loop = loop;
}

var music = [
new track ('AudioGood',true,'sounds/good.wav',0.5,false),
new track ('AudioWrong',true,'sounds/wrong.wav',0.5,false),
new track ('musicBackground',true,'sounds/background.ogg',0.5,true),
new track ('AudioDrop',true,'sounds/drop.wav',0.5,false),
new track ('AudioCard',true,'sounds/card.wav',0.5,false)
];

但我需要创建一个音频元素,document.createElement('audio')。我该怎么做?这可能是一个愚蠢的问题,但请仁慈...

最佳答案

最合乎逻辑的方法是创建一个属性,如 element 指向 DOM 元素:

function Track (name, controls, src, volume, loop) {
    this.name = name;
    this.element = document.createElement('audio');
    this.element.controls = controls;
    this.element.src = src;
    this.element.volume = volume;
    this.element.loop = loop;
}

此外,即使 this.element 的属性可公开访问,在轨道原型(prototype)上创建必要的 getter/setter 方法也是一个不错的设计选择。例如:

Track.prototype.setVolume = function(value) {
    this.element.volume = value;
};

关于javascript - 为一组声音元素jquery,javascript创建一个音频对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28874978/

相关文章:

javascript - 如何更新React本地存储?

javascript - jQuery 重叠 div 不会使 div 的隐藏 onclick 无效

php - [PHP]编辑记录,更新mysql查询

php - jquery 验证提交按钮不起作用

javascript - 如何按重复值拆分数组?

c++ - 3维数组动态分配问题

javascript - 使用 javascript 解析带有 CDATA 部分的 xml - 防止执行脚本

javascript - 加入两个函数 JqueryUI datepicker for "beforeShowDay"

javascript - Bootstrap-Vue 坏了吗?

javascript - ajax 调用中的 HTML5 视频