BlueJay
12-06-2007, 09:50
Hallo Leute,
Habe mein Progrämmchen in ein Applet umgeschrieben.
Problem: die Graphics-Lib
Und zwar zeichnet die bei jeder Änderung den Screen neu. Das flackert natürlich.
Mit repaint(x0,y0,dx,dy) reduziert sich das Flackern, 9m Konqueror ist es sogar weg, aber z.B. im FF2 flackert es doch noch gewaltig, als ob auch ausserhalb dieses Bereiches der Screen neugezeichnet wird.
Gibt es da Abhilfe?
Und wie?
beteiligter Code:
// wird durch mouseClicked(event) aufgerufen:
public void klick(int mx,int my)
{ int ix,iy;
ix=(mx-xoff)/dx;
iy=(my-yoff)/dy;
if ((iy<ymax) && (ix<xmax) && (spiel_laeuft))
{ cnt++;
repaint(0,ustart,sxmax,symax); // Refresh Anzeigen
turn(ix+xmax*iy); // ruft nach getaner Arbeit show_chip() auf
checkende();
}
else if ((my>ustart) && (mx>sxmax-56)) // Steuerung
{ ix=mx-sxmax+56;
if (ix<16) modus=2; else if (ix<32) modus=3; else modus=4;
neu();
}
}
// updatet Feld, zeichnet einzelne Chips neu (aber eher wohl nicht)
public void show_chip(int nr)
{ int ix=nr%xmax;
int iy=(nr-ix)/xmax;
int xx=ix*dx+xoff;
int yy=iy*dy+yoff;
repaint(xx,yy,dx,dy); // hier zeichnet er wohl doch mehr als 1 Chip neu!
}
Applet:
http://www.gamecraft.de/java/turnit_app/
kompletter AppCode:
http://www.gamecraft.de/java/turnit_app/turnit_app.java
(zeigt zumindest der Konqueror korrekt an)
so long,
BlueJay
Habe mein Progrämmchen in ein Applet umgeschrieben.
Problem: die Graphics-Lib
Und zwar zeichnet die bei jeder Änderung den Screen neu. Das flackert natürlich.
Mit repaint(x0,y0,dx,dy) reduziert sich das Flackern, 9m Konqueror ist es sogar weg, aber z.B. im FF2 flackert es doch noch gewaltig, als ob auch ausserhalb dieses Bereiches der Screen neugezeichnet wird.
Gibt es da Abhilfe?
Und wie?
beteiligter Code:
// wird durch mouseClicked(event) aufgerufen:
public void klick(int mx,int my)
{ int ix,iy;
ix=(mx-xoff)/dx;
iy=(my-yoff)/dy;
if ((iy<ymax) && (ix<xmax) && (spiel_laeuft))
{ cnt++;
repaint(0,ustart,sxmax,symax); // Refresh Anzeigen
turn(ix+xmax*iy); // ruft nach getaner Arbeit show_chip() auf
checkende();
}
else if ((my>ustart) && (mx>sxmax-56)) // Steuerung
{ ix=mx-sxmax+56;
if (ix<16) modus=2; else if (ix<32) modus=3; else modus=4;
neu();
}
}
// updatet Feld, zeichnet einzelne Chips neu (aber eher wohl nicht)
public void show_chip(int nr)
{ int ix=nr%xmax;
int iy=(nr-ix)/xmax;
int xx=ix*dx+xoff;
int yy=iy*dy+yoff;
repaint(xx,yy,dx,dy); // hier zeichnet er wohl doch mehr als 1 Chip neu!
}
Applet:
http://www.gamecraft.de/java/turnit_app/
kompletter AppCode:
http://www.gamecraft.de/java/turnit_app/turnit_app.java
(zeigt zumindest der Konqueror korrekt an)
so long,
BlueJay