0

私は何年もの間、これを理解しようとしてきました。このStop()関数は if ステートメントでは機能しません (一時停止や巻き戻しではなく、曲を重ねて再生するだけです)。関数呼び出しを if ステートメントの外に置くと、Stop()動作するように見えます (つまり、期待される動作であるファイルはまったく再生されません)。

-------------- コードのサンプル --------------------------

      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();
}

望ましい結果は、各カードで異なるサウンドを再生することです。ただし、カードがスキャンされ、カードが既にクリップを再生している場合、再度スキャンすると、その割り当てられたクリップの再生が停止し、残りの他のクリップは引き続き再生されます。

4

1 に答える 1