JavaScript - můžete přehrávat zvuk spolu s náhodně generovanými hodnotami

hlasů
0

Mám funkci, která zobrazuje náhodné slovo z řady, v non-opakovaným způsobem.

Také bych chtěl hrát zvukového klipu s každým slovem (ten zvuk by být slovo má výslovnosti).

Já vím, jak hrát jednotlivé zvuky a jak se hraje náhodné zvuky z řady zvuků. Ale když jsem vytvořit řadu zvuků, jak mohu hrát každý z nich pouze tehdy, pokud se zobrazí odpovídající slovo?

To je to, co jsem pracovat s:

const p = document.getElementById(randomWord);
const origWords = [alpha, bravo, charlie, delta, echo];
const audioClips = [alpha.mp3, bravo.mp3, charlie.mp3, delta.mp3, echo.mp3];
let remainingWords = [];

function randomize() {
  if (remainingWords.length === 0) remainingWords = origWords.slice();
  const {
    length
  } = remainingWords;
  const [word] = remainingWords.splice(Math.floor(Math.random() * length), 1);
  p.textContent = word;
}
<button onclick=randomize() type=button>Random Word</button>
<p id=randomWord></p>

Položena 20/10/2018 v 13:01
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
2

Chtěl bych změnit způsob ukládání dat. Místo toho, origWordsa audioClipsmůžete použít pole objektů:

const myWords = [
    {
       text: "alpha",
       audio: "alpha.mp3"
    },
    {
       text: "bravo",
       audio: "bravo.mp3"
    },
    ...
] 

Pak ve svém funkci poté, co dostanete náhodný index právě acces .textnebo .audioklíče

Edit: Úryvek

const p = document.getElementById("randomWord");
const myWords = [
    {
       text: "alpha",
       audio: "alpha.mp3"
    },
    {
       text: "bravo",
       audio: "bravo.mp3"
    }
 ];
 let remainingWords = [];

function randomize() {
  if (remainingWords.length === 0) remainingWords = myWords.slice();
  let length = remainingWords.length;
  let randomIndex = Math.floor(Math.random() * length);
  const word = remainingWords[randomIndex];
  remainingWords.splice(randomIndex, 1);
  console.log(word);
  console.dir(p);
  p.textContent = word.text;
// your audio code here like audio.play(word.audio);
}
    <button onclick="randomize()" type="button">Random Word</button>
    <p id="randomWord"></p>

Odpovězeno 20/10/2018 v 13:15
zdroj uživatelem

hlasů
0

Chtěl bych použít HashMap, například:

const origWords = {"alpha":"alpha.mp3", "bravo":"bravo.mp3", "charlie":"charlie.mp3", "delta":"delta.mp3", "echo":"echo.mp3"};

...    

randomIndex = randomize();
key = Object.keys(origWords)[randomIndex];
p.textContent = key;
playSound(origWords[key]);
...
Odpovězeno 20/10/2018 v 13:51
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more