P5JS声音仅在我离开活动标签时播放

时间:2018-05-05 15:54:08

标签: javascript p5.js

我正在尝试编写代码,以便当rect()到达某个点时,一首歌将开始播放。我的实际代码出现问题,所以我开始使用新的测试文件来解决它并尝试让它工作(我的实际js文件非常长而且我想要简短而简单的东西)但我刚刚遇到了问题了。

代码应该起作用,所以如果按下鼠标,左边的方块将滑到右边的方块,当它到达右边的方块时,歌曲就会播放。如果再次单击鼠标,则歌曲将停止。

我已经完成了大部分工作,但是当我添加

时会遇到麻烦
if ( backtoblack.isPlaying() ) {
    backtoblack.stop();
  } else {
    backtoblack.play();
  }

以下是草图的完整代码:

var backtoblack;
var rect1X = 20;
var speed = 1;
var mouseWasPressed; 


function preload(){

    backtoblack = loadSound('assets/backtoblack.mp3');
}


function setup() {

    createCanvas(590,630);
    background("#704e34");
}


function draw(){

    fill("#fff");

    rect(rect1X, 20, 120, 120);

    rect(450, 20, 120, 120);

    if (mouseWasPressed == true ) {

        if(rect1X <= 390){

            rect1X += speed;
        }
    }

    if ( backtoblack.isPlaying() ) {
        backtoblack.stop();
    } else {
        backtoblack.play();
    } 
}  

function mousePressed(){
    mouseWasPressed = true;
}

1 个答案:

答案 0 :(得分:0)

问题是,切换歌曲是否正在播放的if else块位于draw()功能内。这意味着每秒60次,你切换歌曲!这就像你经常按下播放和停止按钮。然后当您切换标签时,draw()功能暂停,这就是它停止翻转的原因。

要解决您的问题,您无需每帧切换歌曲。也许把它放在mousePressed()函数中来测试。

退一步,我也鼓励你debug your code(该指南适用于Processing,但here是JavaScript指南)。你把一个较小的示例程序放在一起进行测试真的很棒,但你也应该尝试逐行遍历代码,或者添加print语句来弄清楚发生了什么。单步执行或添加打印语句可以帮助您了解正在发生的事情。

无论如何,祝你好运!