import java.awt.*; import java.applet.Applet; public class Appletti extends Applet { public void paint(Graphics x){ Image hahmo = getImage(getCodeBase(),"hahmo.gif"); x.drawImage(hahmo,20,20,this); } }
Ei ymmärtää! Mikä tos ny olevinaa on vikana. Nii simppeli koodi eikä pitäs mitään vikaa olla. hahmo.gif tiedosto on samassa kansiossa ku classit ja html tiedosto.
Matso kirjoitti:
Ei ymmärtää! Mikä tos ny olevinaa on vikana.
Ei ymmärrä minäkään. Mulla toi nimittäin toimii.
Matso: oletko varmasti kääntänyt .class-tiedostoksi?
KingOfTheWorld kirjoitti:
Matso: oletko varmasti kääntänyt .class-tiedostoksi?
Joo. Eclipse tekee sen automaattisesti. Se kyllä toimii AppletViewerillä, mutta ei näytä tota kuvaa.
Jos eclipsesi aja softa -napista se avataan sillain, että työhakemistona on joku muu kuin se missä tuo kuva on? Jos to getCodeBase() antaakin jotain muuta kuin mitä pitäisi? Debuggaa vaikka printtaamalla sen arvo ulos.
Tai kokeile jotakin muuta Java-ohjelmaa ja kokeile HTML-tiedostossa.
Matso kirjoitti:
public class Appletti extends Applet { public void paint(Graphics x){ Image hahmo = getImage(getCodeBase(),"hahmo.gif"); x.drawImage(hahmo,20,20,this); } }Ei ymmärtää! Mikä tos ny olevinaa on vikana.
Blaze kirjoitti:
Ei ymmärrä minäkään. Mulla toi nimittäin toimii.
Matso kirjoitti:
Se kyllä toimii AppletViewerillä, mutta ei näytä tota kuvaa.
Kannattaa lukea uudestaan api-dokumentaatiosta Graphics
-luokan drawImage
-metodin kuvaus. Kuvauksen mukaan metodi palauttaa toden, jos kuva piirrettiin kokonaan ja epätoden, jos kuva ei ollut kokonaan latautunut. Kuvan lataus on asynkroninen.
Eli, kun kuva ladataan, kutsu käynnistää kuvanlataussäikeen ja palaa heti takaisin. Jos kuvaa, jota ei vielä ole ennätetty ladata kokonaan, yritetään piirtää, piirtometodi palauttaa epätoden eikä kuva piirry.
Kuvien lataamisen yhteydessä käytetään yleensä MediaTracker-luokkaa, jonka avulla voidaan jäädä odottamaan kuvien latausta. Toinen mahdollisuus on esimerkiksi piirtää kuvat seuraavalla tavalla:
while (!g.drawImage(...));
Itse haksahdin tähän ominaisuuteen aikoinaan, koska en lukenut api-dokumentaatiota tarpeeksi tarkkaan, ja oletin kuvan lataamisen ja piirtämisen toimivan eri tavalla.
Kyllä se tuossa ainakin on ihan tolla tapaa tehty O_o
http://www.internetix.fi/opinnot/opintojaksot/
A-P kirjoitti:
Kuvan lataus on asynkroninen.
Täytyypäs tunnustaa, että en tuota tienny. Pitää muistaa vastaisuuden varalta.
Kuitenkin minusta ei vaikuta, että tuo nyt se ongelma olis, kokeilin piirtää tuollasta 2,8 megan PNG:tä, ruutu on kyllä jonku aikaa harmaana (ja jos printtaan drawImagen paluuarvoa, se on false), mutta kuva ilmestyy siihen ennenpitkää, whilellä tai ilman.
sooda kirjoitti:
Jos eclipsesi aja softa -napista se avataan sillain, että työhakemistona on joku muu kuin se missä tuo kuva on? Jos to getCodeBase() antaakin jotain muuta kuin mitä pitäisi? Debuggaa vaikka printtaamalla sen arvo ulos.
Printtasin ton getCodeBase():n arvon ja se näytti ihan oikean polun.
Asia selvis. Java ei ilmeisesti osannut käsitellä MS Paintilla tallennettua .gif kuvaa. Lol.
Matso kirjoitti:
Asia selvis. Java ei ilmeisesti osannut käsitellä MS Paintilla tallennettua .gif kuvaa. Lol.
Tallentaako MS Paint edes gif-kuvia? Viimeksi, kun olen painttia käyttänyt, se ei osannut kuin bmp-kuvat.
Kyllä tallentaa. Puhutko nyt jostain Windows 3.x mukana tulleesta Paintista? :)
XP:n Paint osaa, vanhemmat ei.
Legu kirjoitti:
Kyllä tallentaa. Puhutko nyt jostain Windows 3.x mukana tulleesta Paintista? :)
Windows 95:n. En tosin tajunnut, että Paintia oltaisiin sen jälkeen kehitetty. Toki giffejä parempiakin kuvamuotoja on olemassa, joten ei ole varmaan iso ongelma, että Paintilla tallennetut gif-kuvat eivät auenneet.
A-P kirjoitti:
Legu kirjoitti:
Kyllä tallentaa. Puhutko nyt jostain Windows 3.x mukana tulleesta Paintista? :)
Windows 95:n. En tosin tajunnut, että Paintia oltaisiin sen jälkeen kehitetty. Toki giffejä parempiakin kuvamuotoja on olemassa, joten ei ole varmaan iso ongelma, että Paintilla tallennetut gif-kuvat eivät auenneet.
Joo tuo paint tallentaa muutenkin kaikki kuvamuodot ihan paskasti. Tekee kaks kertaa isompikokosia tiedostoja kun vastaava tallennettuna esim GIMP:llä :F
Blaze kirjoitti:
XP:n Paint osaa, vanhemmat ei.
Jonkun Officen mukana tulee hassuja laajennuksia, joilla sain kerran 95:ssäkin pelaamaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.