E
Ein Gast
Gast
Ich hab gestern eine zweidimensionalen Karte aus einzelnen tiles (gras, mountain, ..) erstellt. Welches title verwendet wird, wird in einem zweidimensionalen array mit int werten festgehalten. (z.b. 0 = gras) Meine eigentliche Map extended ein Jpanel und liegt in einem frame. Überschrieben hab ich dann die repaint funktion des panels. (Den code hab ich im moment leider nicht bei der hand, da dieser aber eh nicht kompliziert ist machts hoffentlich nichts)
Diese repaint funktion liest das array aus und lädt dann die graphiken von der platte um sie anzuzeigen. Im vorhinein wird ein zentrales tile ausgewählt (also beim start 0,0) dann wird der sichtbare bereich des jpanels mit den verschiedenen tiles angemalt. (somit zeichne ich nichts was ich nicht sehe).
Wenn ich scrollen will dann clicke ich auf ein tile (das nicht die mitte ist). Dieses tile wird dann als neuer mittlepunkt gesetzt und die repaint funktion des jpanels wird aufgerufen. (Dadurch wird eben gescrollt).
Eigentlich funktioniert das soweit auch. (Was mich eigentlich überrascht hat, programmier sonst nur mit swing ohne selber was herumzupainten).
Jetzt zu meinen Fragen.
1) Wie kann ich feststellen wann der user über einen rand hoovert um zu scrollen? Ich glaub es gibt im mouselistener ein onmove (so ähnlich halt). Soll ich da überprüfen ob die mouseposition über dem rand ist und dann scrollen? (sowas wie; if(e.x == map.rechterrand.x) scrollright()?)
2) Wenn ich ein neues tile als center selektie und meine map wird nach gescrollt so gibt es einen gewissen lag obwohl die map nicht komplex ist und auch nicht seh groß ist. Wie kann ich das beschleunigen? Liegt der lag am laden der images von der platte?
Hoffentlich könnt ihr mir im moment auch ohne sourcecode helfen. Später am nachmittag kann ich diesen, wenn benötigt, nachliefern.
Diese repaint funktion liest das array aus und lädt dann die graphiken von der platte um sie anzuzeigen. Im vorhinein wird ein zentrales tile ausgewählt (also beim start 0,0) dann wird der sichtbare bereich des jpanels mit den verschiedenen tiles angemalt. (somit zeichne ich nichts was ich nicht sehe).
Wenn ich scrollen will dann clicke ich auf ein tile (das nicht die mitte ist). Dieses tile wird dann als neuer mittlepunkt gesetzt und die repaint funktion des jpanels wird aufgerufen. (Dadurch wird eben gescrollt).
Eigentlich funktioniert das soweit auch. (Was mich eigentlich überrascht hat, programmier sonst nur mit swing ohne selber was herumzupainten).
Jetzt zu meinen Fragen.
1) Wie kann ich feststellen wann der user über einen rand hoovert um zu scrollen? Ich glaub es gibt im mouselistener ein onmove (so ähnlich halt). Soll ich da überprüfen ob die mouseposition über dem rand ist und dann scrollen? (sowas wie; if(e.x == map.rechterrand.x) scrollright()?)
2) Wenn ich ein neues tile als center selektie und meine map wird nach gescrollt so gibt es einen gewissen lag obwohl die map nicht komplex ist und auch nicht seh groß ist. Wie kann ich das beschleunigen? Liegt der lag am laden der images von der platte?
Hoffentlich könnt ihr mir im moment auch ohne sourcecode helfen. Später am nachmittag kann ich diesen, wenn benötigt, nachliefern.