Forum » Programiranje » [Java] KeyListener težava
[Java] KeyListener težava
javaMaster ::
Živjo,
Žeim naredit neke vrste virtual piano .
Imam sledeč problem:
tukaj imam še kodo:
Bi bil vesel in hvaležen, če bi mi kdo pomagal pri prvem problemu. Hvala
Žeim naredit neke vrste virtual piano .
Imam sledeč problem:
Želim, da ob pritisku točno določene tipke na tipkovnici program predvaja točno določeno mp3 datoteko. Ko pritisnem tipko mi ne predvaja ničesar. Izpiše pa mi tole napako:
java.net.MalformedURLException: no protocol:
Ker to naj bi bil klavir si belim glavo kako naredit, da lahko pritisnem več tipk hkrati (dovolj 4; baje so omejitve)in poslednično se predvaja več datotek istočasno. Jaz sem imel v mislih threading. A ima kod kakšno idejo oz. nasvet
tukaj imam še kodo:
theHandler action = new theHandler(); Cton.addKeyListener(action); Dton.addKeyListener(action); Eton.addKeyListener(action); } private class theHandler extends KeyAdapter { public void keyPressed (KeyEvent event){ try { if (event.getKeyChar()== 'a') Datoteka = "../Cton.mp3"; else if (event.getKeyChar()== 's') Datoteka = "../Dton.mp3"; else if (event.getKeyChar()== 'd') Datoteka = "../Eton.mp3"; AudioClip clip = Applet.newAudioClip(new URL(Datoteka)); clip.play(); } catch (Exception e) { System.out.println(e.toString()); } } } }
Bi bil vesel in hvaležen, če bi mi kdo pomagal pri prvem problemu. Hvala
- spremenil: javaMaster ()
vorantz ::
Glede na "no protocol" ti mogoče manjka "file://" v Datoteka
edit:
tle je en primer
http://www.java2s.com/Code/JavaAPI/java...
edit:
tle je en primer
http://www.java2s.com/Code/JavaAPI/java...
Zgodovina sprememb…
- spremenil: vorantz ()
javaMaster ::
Sem dopisal tisto in zdaj ne pride do napake. Za preverjanje sem izpisal v konzolo, tisto kar pritisnem na tipkovnico, nad ukazom za predvajanje (clip.play();) in izpiše šele ko zaprem aplikacijo. Potem sem izpisal takoj za if stavki in izpiše takoj. Hmm...mogoče je ka na tem
javaMaster ::
Ne vem zakaj noče predvajat. Sem poskušal z mp3 in wav datotekami... Mogoče ve kdo kaj je narobe?
javaMaster ::
Sem rešu prvi problem z drugo kodo in zdaj lepo dela. Me pa še zanima če bi kdo vedel kako naredit, da lahko pritisnem več tipk istočasno in ob tem bi se predvajalo več wav datotek istočasno. Ideje, nasveti...?
Zgodovina sprememb…
- spremenil: javaMaster ()
vorantz ::
Ko zazna novo tipko, naredi novo nit
Ta nit potem odšpila zadevo in se konča
Vsaj jaz bi se tako lotil, mogoče ma kdo kako pametnejšo idejo
Ta nit potem odšpila zadevo in se konča
Vsaj jaz bi se tako lotil, mogoče ma kdo kako pametnejšo idejo
Spura ::
Zakaj imas imena razreda z malo in imena spremenljivk z veliko? Zakaj si preprosto ne preloadas zvokov?
javaMaster ::
Sorry, za zamudo sem šele danes vidu post. Ja, pač tku sem jih poimenoval.
Kako misliš preloudat?? Lahko malo razložiš ?
Aja tisto je stara koda. Spremenil sem način predvajanja in tudi deluje, ampka me zanima tvoja rešitev. Hvala
Kako misliš preloudat?? Lahko malo razložiš ?
Aja tisto je stara koda. Spremenil sem način predvajanja in tudi deluje, ampka me zanima tvoja rešitev. Hvala
Zgodovina sprememb…
- spremenil: javaMaster ()
win64 ::
ustvariš instančne spremelnjivke razreda:
v konstruktor ali inicializacijo dodaš to:
pri predvajanju pa samo:
Tako programu ni potrebno vsakič odpirati datoteke in nalagati zvoka, kar prinese pohitritev(disk je počasen!!!)
private AudioClip clipE, clipF, clipD,...;
v konstruktor ali inicializacijo dodaš to:
public Razred(){ ... clipE=Applet.newAudioClip(new URL("../Eton.mp3")); clipF=Applet.newAudioClip(new URL("../Fton.mp3")); clipD=Applet.newAudioClip(new URL("../Dton.mp3")); ... }
pri predvajanju pa samo:
if (event.getKeyChar()== 'a') clipF.play(); else if (event.getKeyChar()== 's') clipD.play(); else if (event.getKeyChar()== 'd') clipE.play();
Tako programu ni potrebno vsakič odpirati datoteke in nalagati zvoka, kar prinese pohitritev(disk je počasen!!!)
win64 ::
Edit: Malo bolj težavno je, ker imaš handler v drugem razredu. Implementiraj raje KeyListener v zgornjem razredu, potem ta težava izgine. Skupno nekako tako:
public class Razred extends... implements KeyListener{ .... private AudioClip clipE, clipF, clipD,...; public Razred(){ ... clipE=Applet.newAudioClip(new URL("../Eton.mp3")); clipF=Applet.newAudioClip(new URL("../Fton.mp3")); clipD=Applet.newAudioClip(new URL("../Dton.mp3")); ... } @Override public void keyPressed(KeyEvent event) { if (event.getKeyChar()== 'a') clipF.play(); else if (event.getKeyChar()== 's') clipD.play(); else if (event.getKeyChar()== 'd') clipE.play(); } @Override public void keyReleased(KeyEvent e) {} @Override public void keyTyped(KeyEvent e) {} }
Zgodovina sprememb…
- spremenil: win64 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] Zasnova shoot em up igreOddelek: Programiranje | 1195 (874) | PecenkA |
» | [Java] Zagon appleta v HTMLOddelek: Programiranje | 1541 (1363) | Bela01 |
» | [JAVA] branje iz datotekeOddelek: Programiranje | 2406 (2041) | Bela01 |
» | [Java] GrafikaOddelek: Programiranje | 1458 (1225) | SkIDiver |
» | [NALOGA][Java] Težave pri pisanju slikarjaOddelek: Programiranje | 2290 (1932) | l0g1t3ch |