Olisi pieni java ongelma
koodissa pitäis olla kuva ja musiikki mutta pelkkää valkosta tulee
tässä koodi:
package org.me.hello; import java.applet.*; import java.awt.*; import java.awt.event.*; public class NewApplet extends Applet { AudioClip Musaa; Image kuva; public void Paint(Graphics x) { kuva = getImage(getDocumentBase(),"kuva.gif"); x.drawImage (kuva,0,0,this); } public void Init(){ setBackground(Color.GRAY); Musaa = getAudioClip(getDocumentBase(),"Musaa.au"); } public void Start(){ Musaa.loop(); } public void Stop() { Musaa.stop(); } }
Kiitoksia jo etukäteen!
Näin ainakin alkuun kirjoita niiden ylikirjoitettavien metodien nimet oikein... Yleisen nimeämiskäytännön mukaan luokkien nimet kirjoitetaan isoilla alkukirjaimilla ja metodien nimet pienillä alkukirjaimilla.
Eli Paint -> paint, Init -> init, Start -> start, Stop -> stop.
& Musaa -> musaa. Ja luokasta pitää ensin tehdä olio ja komennot start ja stop pitää ajaa, mikäli näin ei ole jo tehty. Edellämainituille metodeille voisi myös harkita kuvaavampia nimiä.
tsuriga kirjoitti:
& Musaa -> musaa. Ja luokasta pitää ensin tehdä olio ja komennot start ja stop pitää ajaa, mikäli näin ei ole jo tehty. Edellämainituille metodeille voisi myös harkita kuvaavampia nimiä.
Muuttujan nimet on hyvän tavan mukaista kirjoittaa pienellä alkukirjaimella, mutta toiminnallisuutta se ei haittaa, vaikka sen kirjoittaisikin isolla. Metoditkin voisi muuten ihan hyvin kirjoittaa isolla kirjaimella, jos välttämättä haluaa, mutta tässä tapauksessa kun ollaan ylikirjoittamassa Applet-luokan metodeita, niin pitää tietysti käyttää sitä samaa nimeä millä ne on siellä Applet-luokassakin.
Tästä luokasta ei tarvitse tehdä oliota, koska se on itsessään Appletin pääohjelma (eli ohjelman suoritus aloitetaan init-metodista).
Appletin start- ja stop-metoditkin on määritelty Applet-luokassa ja dokumentaation mukaan start-metodia kutsutaan välittömästi init-metodin jälkeen ja stop-metodia siinä vaiheessa kun appletia ollaan lopettamassa. Dokumentaation mukaan ne myöskään eivät oletuksena tee mitään.
start- ja stop-metodien dokumentaatio Applet-luokassa: http://java.sun.com/javase/6/docs/api/java/
Ens kerralla suosiolla API ja manuaali käteen ennenku vastaan, ilmiselvästi turhan pitkä aika sitten viime kerran kun Javaa käpristelin. En valitettavasti saa JRE:tä asennettua tähän, jotta voisin hyvittää hämmentävän ekan viestin, joten heitän testaamatta muutaman lisäidean, jotka hyvin mahdollisesti vain hämmentävät lisää :3. Kuvan voisi ladata alustaessa luokkaa, kuten äänikin ladataan. Ongelma voisi olla se, että kuva ei kerkeä latautua ennen kuin paint-metodia kutsutaan (kokeile muuttaa selainikkunan kokoa hetken kuluttua latauksesta). Initissä voisi käyttää tätä ongelmaa estämään MediaTrackeria,
MediaTracker mt = new MediaTracker(this); mt.addImage(kuva, 1); try { mt.waitForID(1) } catch (InterruptedException ie) { }
Lisäksi muuttaisin koodin noudattamaan Java Coding Conventioneita (ellei muistini nyt sentään aivan petä niin tuo ei aivan niin tee. eipä kyllä välttämättä tuo minunkaan). Ja ei niin, että sillä olisi juurikaan väliä, mutta tarvitseekos noita kaikkia awt.eventtejä ja awt-luokkia välttämäti tuoda?
ei tarttee mutta aina huvikseen laitan ja nyt toimii...
Ja aattelin tässä samalla kysyy että miten saa kuvaan jonkun värin laitettuu läpi näkyväksi?
Tarkoitatko nyt Java-ohjelmassa vai ihan yleensä? Mitä lähinnä haet takaa? Jos sprite-kuvia tarkoitat, niin taitaa putkastakin löytyä tuohon yleispätevä johdanto: https://www.ohjelmointiputka.net/oppaat/opas.
Jos pienimuotoista peliä olet väsäämässä, niin voit käyttää .png-kuvia, sillä ne tukevat läpinäkyvyyttä. Yleisimmillä kuvankäsittelyohjelmilla voi png-kuvat tallentaa läpinäkyvyyttä tukevana. Suuremman mittakaavan projekteissa kannattaa kyllä jo harkita omaa sprite-moottoria nopeuden säilyttämiseksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.