多年来,我一直试图弄清楚这一点。该Stop()
函数在 if 语句中不起作用(歌曲只是在彼此之上播放,而不是暂停和倒带)。如果我将Stop()
函数调用放在 if 语句之外,它似乎可以工作(即根本没有播放任何文件,这是预期的行为)想知道是否有人可以阐明一些问题?
--------------代码示例 -------------
import processing.serial.*;
import ddf.minim.*;
String id;
Card Card1 = new Card();
Minim minim;//audio context;
AudioPlayer Backgroundplayer;
public class Card{ // CARD OBJECT so can set up each card.
String id;
String FileToPlay;
boolean Playing = false;
AudioPlayer player;
public Card(){}
public Card(String ID, String FILETOPLAY){
id = ID;
FileToPlay = FILETOPLAY;
}
void Load(){
player = minim.loadFile(FileToPlay);
}
void Play(){
if(Playing == false){
player.play();
Playing = true;
println("PLaying");
}else if(Playing == true){
Playing = false;
Stop();
}
}
void Stop(){
println("Stopping");
player.pause();
player.rewind();
}
}
void setup() {
size(400, 300);
}
void draw() {
}
void mouseClicked() {
Card1.id = id;
Card1.FileToPlay = "drumploop.wav";
Card1.Load();
Card1.Play();
}
期望的结果是用每张卡播放不同的声音。然而,当卡片被扫描时,如果卡片已经在播放一个剪辑,当它再次扫描时,它应该停止播放分配的剪辑,而其余的其他剪辑仍然播放。