Mit javax.sound.beprobt.Clip play, loop und stop mehrere sounds in einem Spiel. Unerwartete Fehler

Ich versuche zu spielen, zwei wav-sounds auf einmal während eines Spiels (Hintergrund-Musik und einen Effekt). Ich zuerst konstruiert dieses Stück code mit einem anderen audio-handler in java, die behandeln würden, die das Abspielen, stoppen, Loopen des sounds. Dieses Konstrukt würde spielen die Musik im hintergrund oder der Effekt aber nur eine zu einem Zeitpunkt. Ich schaute mich um das internet und mir wurde gesagt, verwenden javax.sound.beprobt.Clip Griff die Töne so wiederverwendet das gleiche Konstrukt(play, stop, loop), wechselte aber es zu verwenden, javax.sound.beprobt.Clip. Jetzt bin ich völlig verloren. Von dem, was ich bisher gelesen haben ich habe alles richtig gemacht und bekomme keine Fehler in den eclipse-editor, aber wenn ich es laufen lasse, bekomme ich zwei Fehler. In eclipse (unter Linux) eine LineUnavailableException geworfen wird. In eclipse (unter windows 7) bekomme ich eine java.lang.NullPointerException in der loop () - Abschnitt dieses Codes. Wenn Sie mir zeigen könnte, was ich falsch mache oder zeigen Sie mich auf einige der relevanten Unterlagen, die ich würde schätzen es. Ich gehe davon aus, dass Ihr etwas mit meinem code, behandelt Ausnahmen, aber ich bin mir nicht sicher. Wenn Sie irgendwelche anderen hässlichen code Fehltritte bitte lassen Sie mich wissen, ich bin bemüht das die besten Programmierer, ich kann und wirklich dankbar für Konstruktive Kritik. Vielen Dank für Ihre Zeit.

    import java.io.File;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.Clip;
    import javax.sound.sampled.LineUnavailableException;
    import javax.sound.sampled.UnsupportedAudioFileException;

    /**
     * Handles play, pause, and looping of sounds for the game.
     * @author Tyler Thomas
     *
     */
    public class Sound {
        private Clip myClip;
        public Sound(String fileName) {
                try {
                    File file = new File(fileName);
                    if (file.exists()) {
                        Clip myClip = AudioSystem.getClip();
                        AudioInputStream ais = AudioSystem.getAudioInputStream(file.toURI().toURL());
                        myClip.open(ais);
                    }
                    else {
                        throw new RuntimeException("Sound: file not found: " + fileName);
                    }
                }
                catch (MalformedURLException e) {
                    throw new RuntimeException("Sound: Malformed URL: " + e);
                }
                catch (UnsupportedAudioFileException e) {
                    throw new RuntimeException("Sound: Unsupported Audio File: " + e);
                }
                catch (IOException e) {
                    throw new RuntimeException("Sound: Input/Output Error: " + e);
                }
                catch (LineUnavailableException e) {
                    throw new RuntimeException("Sound: Line Unavailable: " + e);
                }
        }
        public void play(){
            myClip.setFramePosition(0);  //Must always rewind!
            myClip.loop(0);
            myClip.start();
        }
        public void loop(){
            myClip.loop(Clip.LOOP_CONTINUOUSLY);
        }
        public void stop(){
            myClip.stop();
        }
    }

InformationsquelleAutor T. Thomas | 2012-08-12

Schreibe einen Kommentar