我正在创建一个音板,当单击按钮时,它会播放随机声音。我试图通过在for循环中创建一个数组来获取所有mp3文件链接(文件名),当用户单击按钮时,文件名是使用(Math.floor(Math.random))更改。
我遇到的问题是它只播放相同的声音。它不会播放随机声音。
soundboard.ts
/* Loop through them, saving their title and sound file */
for(let link of links) {
let filename = link.getAttribute("href")
let rand = [filename];
this.sounds.push({
file: filename,
rand: rand
});
}
/* Plays the sound */
play(sound) {
sound.rand = sound.file[Math.floor(Math.random() * sound.file.length)];
console.log(sound.rand)
this.media = new Audio(sound.rand);
this.media.load();
this.media.play();
}
答案 0 :(得分:2)
似乎存在逻辑错误。根据您的问题描述,我认为您需要类似
的内容export class Component {
soundFileNames: string[] = [];
media?: Audio;
ngOnInit() {
for (const link of links) {
const fileName = link.getAttribute("href");
soundFileNames.push(fileName);
}
}
playRandomSoundFile() {
const randomIndex = Math.floor(Math.random() * soundFileNames.length);
const randomFileName = soundFileNames[randomIndex];
console.log(randomFileName);
const audio = new Audio(randomFileName);
audio.load();
audio.play();
this.media = audio;
}
}
答案 1 :(得分:-1)
我觉得使用" underscorejs"总是更好。这些常见功能的库。在你的情况下,你试图从数组中获取随机值,你可以实现如下所示" underscorejs"。
view.setVisibility(View.VISIBLE;