Java & Javascript

download Java & Javascript

of 79

Transcript of Java & Javascript

Java - Sectiunea 3Reducerea efectului de palpaire la crearea animatiilorEfectul suparator de palpaire a imaginii in cazul animatiilor, se poate evita prin :

efectuarea operatiilor grafice intr-un obiect de textura din afara ecranului afisarea obiectului de textura redefinirea functiei update astfel incat ea sa nu stearga ecranul intre doua desenari succesive

Pentru acestea in applet-ul original vor fi efetuate urmatoarele modificari:

crearea obiectului de textura din afara ecranuluiRectangle ZonaAp = bounds(); ImagineCeas = createImage ( ZonaAp.width, ZonaAp.height); GraficaExtraEcran = ImagineCeas.getGraphics();

Se observa ca s-au obtinut mai intai dimensiunile zonei ocupate de applet, s-a creat un obiect imagine cu aceste dimensiuni, apoi un obiect de textura, pe baza acestei imagini.

modificarea functiei paint astfel incat imaginea inainte de a fi afisata este pregatita in contextul grafic al texturii extra ecran.

public void paint(Graphics g) { double alfa= nr_sec * Math.PI /30.; GraficaExtraEcran.clearRect(0,0, l, h ); // sterge vechea imagine

GraficaExtraEcran.setColor(Color.red); GraficaExtraEcran.drawOval(5,5,R+R+10, R+R+10); GraficaExtraEcran.setColor(Color.blue); GraficaExtraEcran.drawLine(xc,yc, (int)(xc+(R-10)*Math.cos(alfa)), (int)(yc+(R-10)*Math.sin(alfa)) ); g.drawImage(ImagineCeas, 0, 0, this); }

Se disting in aceasta metoda trei etape importante:o o o

stergerea vechii imagini in obiectul textura, pentru a nu afecta ecranul, crearea noii imagini in obiectul textura extra ecran, deasemenea fara a afecta imaginea de pe ecran afisarea imaginii ceasului din textura pe ecran, cu ajutorul functiei drawImage() 1

Ultima etapa se desfasoara intr-un timp mult mai scurt decat cel necesar construirii imaginii direct pe ecran

redefinirea metodei update()

public void update ( Graphics g) { paint (g); }

In acest fel metoda update() nu mai sterge ecranul intre doua desenari succesive. Noua imagine, cu dimensiunile applet-ului, este afisata peste cea veche. De notat ca pentru a obtine animatia, vechea imagine a fost totusi stearsa, dar in obiectul textura din afara ecranului. Exemplu. Sprer deosebire de applet-ul Ceas, care desena un cerc de dimensiune fixa, urmatorul applet, CeasModificat, va desena un cerc avand raza egala cu R = min(l,h)/2-20, unde l si h sunt latimea respectiv inaltimea zonei applet definita prin tag-ul HTML:

Fisierul sursa al acestui applet este prezentat in continuare.import java.applet.*; import java.awt.*; public class CeasModif extends Applet implements Runnable { int nr_sec; int xc, yc, R; int l, h; Thread fir; Graphics GraficaExtraEcran; // obiect textura Image ImagineCeas; //--------------------------------------------public void init() { Rectangle ZonaAp = bounds(); l = ZonaAp.width ; h = ZonaAp.height; R = (l