Avatar billede dennish Nybegynder
15. maj 2006 - 15:14 Der er 14 kommentarer og
2 løsninger

Tråde (implements Runnable)

Jeg har et program der indeholder noget Swing (GUI). Når der trykker 0 vises en skærmbilled med en fil og en wav fil afspilles. Problemet er pt. At lyden afspilles inden min pil vises. Min tanke er så at lave tråde og lave Java "interleave" de enkelte tråde så jeg f.eks. først ser min pil og derefter hører den tilhørende wav fil. Har sidder lidt og leget med tråde(læst Arnes artikel), men kan ikke få det til at virke. Skal jeg mon ligge den ene tråd til at sove (tråd indeholdende lyd) så den anden tråd der indeholder GUI kan vises og så efterfølgende får jeg wav lyden. Er det måden at gøre det på ??
Avatar billede snoop_one Nybegynder
15. maj 2006 - 17:42 #1
Du skal nok starte én tråd op til at afspille lyden.
noget ala....

final AudioClip ac = Applet.newAudioClip(filename);
new Thread("Play Sound") {
    public void run() {
        ac.play();
    }
}.start();
Avatar billede dennish Nybegynder
15. maj 2006 - 17:47 #2
snoop>> jeg bruger ikke en applet , men ren swin
Avatar billede _carsten Nybegynder
15. maj 2006 - 17:59 #3
Sikkert et dumt spørgsmål, men er din pil et image ??

I så fald ville jeg nok bruge MediaTracker


Image pil = Toolkit.getDefaultToolkit().getImage("C:\\MIN_PIL.gif");

tr.addImage(pil);

try {

    tr.waitForID(0);
    // AFSPIL LYD

} catch (InterruptedException ex) {
    ex.printStackTrace();
}

private java.awt.MediaTracker tr = new MediaTracker(this);
Avatar billede snoop_one Nybegynder
15. maj 2006 - 18:20 #4
Du skal ikke bruge applet for at køre den ovenstående kode. Jeg køre den selv i en applikation med swing :)
Avatar billede snoop_one Nybegynder
15. maj 2006 - 18:23 #5
Avatar billede dennish Nybegynder
15. maj 2006 - 18:33 #6
snoop>> inal AudioClip ac = Applet.newAudioClip(filename); kræver at filnavnet i java.net url formatet ??
Avatar billede arne_v Ekspert
15. maj 2006 - 18:52 #7
URL'er som starter med file: er lokale filer
Avatar billede dennish Nybegynder
15. maj 2006 - 18:56 #8
Det virker nu. Bruger godt nok SimpleAudioPlayer. http://www.eksperten.dk/spm/235749. Min snoop du fik mig på rette spor. Jeg har en eventlistene i min klasse Orientering.java som er i en tråd.  Når der sker en event skal der afspilles lyd. ud fra dit eksempel opretter der en ny tråd og lyden afspilles. Kan det virkelig passe at jeg skal oprette en ny tråd hver gang jeg skal afspille en lyd
Avatar billede snoop_one Nybegynder
15. maj 2006 - 19:46 #9
Nej.
Det var én løsning og der er nok masser af alternativer.
Hvad er problemet i at oprette en tråd for hver gang en lyd skal afspilles?
Avatar billede dennish Nybegynder
15. maj 2006 - 20:45 #10
snoop>> egentlig ikke et problem. Jeg ved ikke meget om tråde så derfor spørgsmålet
Avatar billede dennish Nybegynder
15. maj 2006 - 21:05 #11
Men jeg vil nu få en masse tråde i mit program idet jeg har mange event listeners. Men jeg formoder at disse tråde nedlægger når jeg er ude af scope
Avatar billede snoop_one Nybegynder
16. maj 2006 - 09:38 #12
Ja de (trådene) bliver samlet op af garbage collectoren når de ikke længere bruges. Du skulle måske overveje at loade dine lydfiler ind inden programmet startes... så slipper du for at loade den samme lyd ind mange gange.
Avatar billede dennish Nybegynder
03. juni 2006 - 12:01 #13
smider i lige et svar
Avatar billede _carsten Nybegynder
03. juni 2006 - 12:33 #14
Svar
Avatar billede snoop_one Nybegynder
03. juni 2006 - 18:08 #15
svar :)
Avatar billede snoop_one Nybegynder
03. juni 2006 - 18:08 #16
ups ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester