Elikkä mun pitäs saada ohjelmaan soimaan audio clippi kun ohjelman ajaa, ei kummempaa. Projektityötä varten. En ole paljoa Java:aa koodannut, joten tarvitsisin aika tarkat ohjeet. Perusteet jotenki osaan. Mahdollisimman yksityiskohtaiset neuvot olisivat poikaa, elikkä vaikka kerrotaan milloin, että kutsutaan tästä main ohjelmasta toisen ohjelman funktio. Kun suurin ongelma minulla tahtoo olla se, että en perus esimerkkejä oikein käsitä kun ei kerrota, koodin pätkät pitää pääohjelmasta kutsua.
Eli esimerkki koodia, jolla saan audiota toistettua kun main ohjelman ajaa.
Ja eritoten täytyisi saada tuo ohjelma soittamaan audiota kovalevyltä eikä netistä.. Kiitos.
Elikkä tämä olisi koodin pätkä mitä olen jo kirjoittanut.
package projektityö; import java.awt.*; import java.awt.event.*; public class Main { public static void main(String[] args) { //poor try to get some nutcracking music // Start of "window button view" code Button b; ActionListener a = new MyActionListener(); Frame f = new Frame("You Can't Touch This"); f.add(b = new Button("This"), BorderLayout.CENTER); f.add(b = new Button("Yeah, i really can't touch it"), BorderLayout.SOUTH); b.setActionCommand("Exit"); b.addActionListener(a); f.pack(); f.show(); } } class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent ae) { String s = ae.getActionCommand(); if (s.equals("Exit")) { System.out.println(" I told you "); System.exit(0); } } }
Jotain tällaista olin koittanut, mutta en saanut toimimaan.
Tiedän tuo on kommentoitu älkää tuosta välittäkö.
package projektityö; /* import java.applet.*; import java.awt.*; //This should play music but it won't public class musicsample extends Applet { AudioClip voice; public void init() { voice = getAudioClip(getDocumentBase(),"music.au"); } public void paint(Graphics g) { g.drawString("looping",50,50); } } */
Kooditagit voisit silti osata. Mod. huom.
java + play + audio ==> http://www.javaworld.com/javaworld/javatips/jw-javatip24.html
Ei riitä, että audioclippi haetaan, se pitää myös soittaa:
voice.play(); //play once voice.stop(); //stop playing voice.loop(); //play continuously
Joo, kiitos vinkinstä määpä koitan tässä säätää toimimaan tämä.
Joo tällä hetkellä en saanu toimimaan. Joku exception tulee. Pitääpä koittaa vielä jollain toisella keinolla tässä. En tätä hommaa taida kyllä ikinä oppia :)
Ei siinä mitään kummempaa magiaa pitäisi olla. Jos tulee virheitä, niin kopioi ihmeessä virheilmoitus tänne niin selvitetään mistä kiikastaa.
import java.applet.Applet; import java.applet.AudioClip; import java.net.MalformedURLException; import java.net.URL; public class Tmp extends Applet { public void init() { try { AudioClip clip = getAudioClip(new URL("http://upload.wikimedia.org/wikipedia/commons/a/a0/Bass_sample.mid")); clip.play(); } catch (MalformedURLException e) { e.printStackTrace(); } } }
Kiitoksia avusta, kun tuo Java:n osaamiseni tahtoo vähän olla C++ "kääntämistä" Java:ksi, nii tahtoo vähän noita "mustia aukkoja" jäädä noihin koodeihin, mitä en aina saa toimimaan. Varsinkin noissa kirjasto funktioissa jne. Mutta sinällään oon ihan tyytyväinen siihen, mitä olen Java:a oppinut, kun olen muutamassa tunnissa opetellut kaiken itse.
Main class.
package projektityö; import java.awt.*; import java.awt.event.*; public class Main { public static void main(String[] args) { //poor try to get some music playing tmp voice = new tmp(); voice.init(); //Start of "window button view" code Button b; ActionListener a = new MyActionListener(); Frame f = new Frame("You Can't Touch This"); f.add(b = new Button("This"), BorderLayout.CENTER); f.add(b = new Button("Yeah, i really can't touch it"), BorderLayout.SOUTH); b.setActionCommand("Exit"); b.addActionListener(a); f.pack(); f.show(); } } class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent ae) { String s = ae.getActionCommand(); if (s.equals("Exit")) { System.out.println(" I told you "); System.exit(0); } } }
tmp class
package projektityö; import java.applet.Applet; import java.applet.AudioClip; import java.net.MalformedURLException; import java.net.URL; public class tmp extends Applet { public void init() { try { AudioClip clip = getAudioClip(new URL("http://upload.wikimedia.org/wikipedia/commons/a/a0/Bass_sample.mid")); clip.play(); } catch (MalformedURLException e) { e.printStackTrace(); } } }
Ja tämmöinen herjaus teksti tulee.
run: Exception in thread "main" java.lang.NullPointerException at java.applet.Applet.getAppletContext(Applet.java:187) at java.applet.Applet.getAudioClip(Applet.java:295) at projektityö.tmp.init(tmp.java:18) at projektityö.Main.main(Main.java:19) Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds)
Oon koittanu jo monella eri tavalla tätä ränklätä ja päätin ottaa tuon viimeisen esimerkin tuossa esille ja koittaa sitä, en onnistunut kuten huomaatte.
Ärsyttää vähän, kun ei ole oikein ketään jolta voisin kysyä tähän apua.
Luulisin, että tässä tapahtuu, niin että tuo koodin pätkä nyt ei mitään palauta vaan antaa arvoksi haetulle musiikin pätkälle NULL eli ei mitään.
Jos oon oikeassa, niin miten tuon saan kierrettyä.
Jos oon väärässä, niin kertokaas mikäs tässä on vialla ja miten eteenpäin.
Tarkemmin sanottuna nullia tulee getAppletContext
-metodilta, sillä suoritat koodia varmaankin komentoriviltä. Appletteja tulee pyörittää joko selaimessa, appletviewerissä tmv. niille sopivassa ympäristössä. Lisäksi kehottaisin käyttämään selkeitä nimeämiskäytäntöjä ja Javan (Sunin?) koodauskonventioita heti alusta lähtien.
Joo voi että, mitenhän mulla ei tullu mieleen. Mäpäs koitan kikkailla tomcat:illa jos onnistuis. Joo ja tosiaan ajan ohjelmat netbeansilla.
Ei tarvihhe tomcattia, object-tagi webbisivulla riittää:
Testi.html
<object codetype="application/java" classid="java:Main.class" width="500" height="500"> Java-appletti, joka soittaa musiikkia </object>
Tuon voikin sit ajella vaikka selaimella tai appletviewerillä.
Kiitoksia avuista, loppujen lopuksi päätin etten teekkään appletilla tuota.
Opettaja ei oikein appletti säädöistä pitänyt.
Kiitos kaikille kuitenki.´
Tässä joululomat kun tulee, nii jatkuu koodaus hommat.
Aihe on jo aika vanha, joten et voi enää vastata siihen.