# javax.sound.sampled.Clip clone()



## Klaus2002 (5. Jan 2012)

Hallo

Ich versuche mich gerade an einem kleine Spiel. Ich diesem bewegen sich Figuren. Sobald diese einen Schritt machen, wird eine Sounddatei abgespielt. Jetzt kann es aber vorkommen, dass die Figur sich so schnell bewegt, dass der Sound noch nicht zu Ende gespielt ist. Dann bricht er ab und der neue beginnt abzuspielen.

Damit dieses nicht mehr geschehen kann, möchte ich den Clip in Thread packen.


```
public void move() {

		Sound soundFx = new Sound(clip));
		soundFx.start();

    }
```


```
public class Sound extends Thread {

	private Clip clip = null;

	public Sound(Clip clip) {
		this.clip = clip;
	}

	public Sound() {
	}

	public void run() {
			clip.setFramePosition(0);
			clip.start();
	}

}
```

Soweit so gut. Die Thread werden erstellt, der Sound ist zu hören. Allerdings wird ja nur eine Referenz auf den Clip übergeben und dadurch wird schlussendlich immer der gleiche Clip abgespielt. Daher kann es immer noch vorkommen, dass der Clip unterbrochen wird wenn die Figur schnell geht.

Ich dachte mit clip.clone() könnte ich mir jetzt behelfen. Leider besitzt clip diese Methode nicht.

Was könnte ich also noch tun?


----------



## Helgon (5. Jan 2012)

Du könntest ne Variable setzen die überprüft ob der Clip noch am laufen ist und das je nach dem eben überprüfen bevor sie erneut abgespielt wird


----------



## Klaus2002 (5. Jan 2012)

Die Sounddatei ist so ein Schritt mit Schall in einer großen Halle. Sie ist also relativ lang. Wenn ich deine Lösung nehmen würde, könnte es sein dass einige Schritte nicht zu hören sind.

Ich will aber für jeden Schritt einen eigenen Thread öffnen, so das z.B. auch beim Rennen 2-3 Schritte gleichzeitig zu hören sind.


----------

