我正在尝试编写代码,以便当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;
}
答案 0 :(得分:0)
问题是,切换歌曲是否正在播放的if else
块位于draw()
功能内。这意味着每秒60次,你切换歌曲!这就像你经常按下播放和停止按钮。然后当您切换标签时,draw()
功能暂停,这就是它停止翻转的原因。
要解决您的问题,您无需每帧切换歌曲。也许把它放在mousePressed()
函数中来测试。
退一步,我也鼓励你debug your code(该指南适用于Processing,但here是JavaScript指南)。你把一个较小的示例程序放在一起进行测试真的很棒,但你也应该尝试逐行遍历代码,或者添加print语句来弄清楚发生了什么。单步执行或添加打印语句可以帮助您了解正在发生的事情。
无论如何,祝你好运!