JApplet - wczytywanie pliku audio

0

Witam.

Stworzyłem sobie osobną klasę do wczytania pliku. Mniej więcej taką.


class Song extends JApplet{
		
		private AudioClip mySong;
		
		public Song(String name)
		{
			try
	        {
	            mySong = getAudioClip(new URL(getDocumentBase(),
	               name));
	        }
	        catch(Exception e)
	        {
	            System.out.println(e);    
	        }
		}
		
		public void playSong()
		{
			mySong.play();
		}
	}

 

Potem w innej klasie tworzę obiekt.

Song testSong = new Song("sound/fail.wav");

Wyrzuca wyjątek java.lang.NullPointerException, nie mam pojęcia już o co chodzi. Plik umieściłem tam gdzie trzeba.

0

To teraz łaskawie w miejscu

System.out.println(e);

wstaw

e.printStackTrace();

żeby wiedzieć gdzie poleciał wyjątek...

0

at java.applet.Applet.getDocumentBase(Unknown Source)

Odsyła do tej linijki

mySong = getAudioClip(new URL(getDocumentBase(),name));

0

Ech. To ma być applet? Więc czemu nie ma tu init() tylko konstruktor? Przy tworzeniu appletu uruchamia się metoda init() i tam dopiero masz dostępny "kontekst" appletu. Nie możesz sobie zrobić getDocumentBase() z poziomu konstruktora w ten sposób, bo zwróci ci nulla, a konstruktor URL wysypie się na tym nullu.

0

Applet jest w innej klasie, to jasne, że init mus być. Rozdzielić po prostu to chciałem. Nie chce wszystkiego na kupie pisać. Pisałem ,że osobny obiekt do wczytywania chciałem zrobić. Nic poradzę sobie samemu.

0

No lol, ale ta klasa tutaj dziedziczy z JApplet! To się zdecyduj. Skoro "applet jest w innej klasie" to co robi tutaj extends JApplet? o_O

0

Wykombinowałem to niby tak, wygląda na to ,że plik wczytało ale nie słychać odtwarzania. Wypisuje to: sun.applet.AppletAudioClip@e00b556. Jakieś sugestie ??

class Song {
				
	AudioClip ac;
	
		public Song(String name)
		{
			
			try {
								
			      Url url = getClass().getResource(name);
			      ac = Applet.newAudioClip(url);			     

			      System.out.println(ac);			      
			      
			      ac.play();
                              ac.stop();
			      
			    } catch (Exception e) {
			      System.out.println(e);
			    }
			
		}
						
	
	}

0

A czemu zaraz po play() jest stop()? Nie zdąży sobie pograć. Druga sprawa, jaki jest format pliku dźwiękowego?

0

Literówka. Plik jest w formacie wav.

0

Jaka literówka?

0

Nie działa, metedy stop() też nie mam w kodzie, sprawdzałem ścieżkę i pokazuje dobrą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1