En tiedä kuvan oikeaa nimeä, mutta sen tiedän, että javalla se toteutetaan, mutta en nyt mene takuuseen, että miten.
Eli on kuva. Kooltaan 3000x3000. Sitähän on ihan tyhmä vain HTML pamauttaa tuon kokoisena eteen, mutta sitä ei voi pienentää HTML avulla, koska laatu menee aivan munille pienten asioiden takia. Joten:
Mutta jos kuvasta näytettäisi vain 500x500 alue ja loppu olisi "piilossa" vieressä olisi nuolet joita painamalla kuva liikkuu. Jonkinnäköinen hahmotelma minulla on C++:sta päässä, että kuvaa pitäisi liikuttaa johonkin, mutta en nyt tiedä miten kuvaa liikutetaan Javassa.
Toinen on mistä minulla ei ole mitään hajua, että liikenne tilan/serveri kaistan säästämiseksi onko mahdollista tehdä niin, että kuvasta piirretään/ladataan vain näytettävä osa? Eli ei sitä mitä ei näy missään.
leikkaat kuvan sopivan kokoisiin palasiin, ja aina kun painaa nuolta niin vaan ladataan uusi palanen ja vapautetaan entinen...
Tuskin kaistankulutus on niin älyttömän suuri, että pitäisi/kannattaisi sitä lähteä yrittämään pilkkoa.
Ja onnistuu tuo ihan ilman Javaakin, CSS:llä määrittelet vaan alueen jonka koko on 500x500 ja pistät overflow: auto. Tietenkään ei toimi kyllä jos tämän on tarkoitus tulla johonkin javapeliin/vastaavaan sovellukseen.
Kuitenkin se menis jotenkin näin:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Imagefield</title> <style type="text/css"><!-- div.area { width: 500px; height: 500px; overflow: auto; margin: 0; padding:0; border: 1px solid #eee; } div.area img { padding: 0; margin: 0; } --></style> </head> <body> <div class="area"><img src="path/to/the/image.png" alt="Image" /></div> </body> </html>
Tämän tarkoitus on tulla käytännössä peliin, mutta ihan vain selainpeliin, joissa jotkin ominaisuudet on tehty Javalla. En voi pilkkoa kuvaa eri osiin niinkuin vehkis ehdotti, koska en saisi näin määritettyä pelaajan sijaintia koska kartan osat olisi erit. Tai saisin, mutta joutuisin muuttamaan melko paljon lähdekoodia, mutta jos muuta keinoa ei ole niin teen noin, mutta ensin kysyn vielä, että onko jotain muuta keinoa?
Jos tallennat kuvan täysin pakkaamattomana (BMP:nä), voit ladata siitä osia kerrallaan, mutta tällöin joudut jokaista pikseliriviä varten tekemään uuden HTTP-pyynnön, ja koska datakin on vielä pakkaamatonta, kaistaa kuluu varmasti moninkertaisesti verrattuna siihen, että pakatun kuvan (PNG:n tai JPEGin) lataisi kerralla.
Suosittelen jakamista osiin, se on kaikkien kannalta järkevämpää ja todella helppo toteuttaa. Pelissäsi on erittäin vakava suunnitteluvirhe, jos se on noin vahvasti riippuvainen kartan esitystavasta. Jos olisin itse tehnyt pelin, tämä muutos vaatisi arviolta 10–20 riviä lisää koodia.
Ei tämäkään enempää oikeastaan vaadi, mutta tarkoitin vain, että pitää tehdä uusi sarake tietokantaan esim "map_data" ja lisätä sille arvo rekisteröinnin käisttelyssä ja sitten tehdä pari koodia itse map.php tiedostoon, mutta siis ymmärsinkö oikein? .BMP vie enemmän kaistaa kuin .PNG vai toisinpäin?
No BMP:t tuppaa olemaan suurempia tiedostoja...
Aihe on jo aika vanha, joten et voi enää vastata siihen.