创建计时器功能

时间:2019-06-29 08:00:59

标签: javascript timer p5.js

解释现在的整个程序:有6条音轨。我有语音识别运行,可以检测到用户语音,并且当他讲话时,第一首曲目将被完全播放,并在曲目结束时停止播放。然后它开始收听语音,并在检测到第二音轨时一直播放,直到音轨6。

我要更改的内容:正在播放第一首曲目..等待用户语音响应,如果5秒钟后没有响应,则播放下一首曲目。但是如果检测到用户响应,则立即转到下一首。

function parseResult() {
    var mostrecentword = myRec.resultString.split(' ').pop();
        if (mostrecentword.indexOf("") !== -1) {
            setInterval(myTimer, 1);
            songs[currentSong].playMode('untilDone');
            songs[currentSong].play();
            background(0, 255, 0);
        }
}


function myTimer() {
    if (millis() > startT + fiveSeconds) {
        startT = millis();
        console.log(startT);
        currentSong++;
        background(0, 0, 255);
    }

}

函数draw()中没有任何内容,它为空。

function setup() {
    frameRate(1);
    createCanvas(600, 600);
    background(255, 255, 255);
    fill(0, 0, 0, 255);
    myRec.start();
    startT = millis();
}

然后就是设置。我使用https://github.com/IDMNYU/p5.js-speech进行语音朗读(这一部分效果很好,一点也不麻烦)

1 个答案:

答案 0 :(得分:0)

let currentSongIndex = 0
let totalSongs = 6
let canPlay = true
let timer = null

function playSong() {
    if (timer) {
        clearTimeout(timer)
        timer = null
    }

    songs[currentSongIndex].play()
    timer = setTimeout(nextSong, 5000)
}

function nextSong() {
    if (currentSongIndex < totalSongs) {
        currentSongIndex++
    }else{
        currentSongIndex = 0
    }

    playSong()
}


function speechResult() {
    var resultArray = myRec.resultString.split(' ').pop()

    if (resultArray.indexOf('') > -1 && canPlay) {
        nextSong()
    }
}

从@lassekorsgaard得到答案