ďťż
 
Podwojne buforowanie - eliminacja przerysowan ďťż
 
Podwojne buforowanie - eliminacja przerysowan
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Podwojne buforowanie - eliminacja przerysowan



Mazi - 01-04-2006 00:21
Podwojne buforowanie - eliminacja przerysowan
  Witam
Mam problem, z ktorym walcze juz od jakiegos czasu i nie moge sobie
poradzic. Chodzi mi mianowicie o wyeliminowanie efektu "przerysowywania" w
grze Tetris. Efekt ten objawia sie tym ze jest juz namalowany klocek w nowym
polozeniu a jeszcze widzimy jego stare polozenie. Myslalem ze podwojne
buforowanie wyeliminuje ten efekt ale niestety nie. Efekt przerysowania
pojawia sie rzadko ale chcialbym go calkowicie wyeliminowac. Ma on miejsce w
momencie, kiedy przesuwamy klocek strzalka z klawiatury i w tym samym
momencie watek, ktory przesuwa klocek w dol, takze przesuwa klocek - czyli
nastepuje wywolanie metody repaint() praktycznie w tym samym czasie.
Probowalem z synchronizajcja bloku kodu w metodzie paint(), wstrzymywaniem:
wait - notify ale niestety nie pomaga. Moze ktos walczyl z podobnym
problemem i ma jakies doswiadczenia?
Bede wdzieczny za wszelkie sugestie.

ponizej fragment metody paint, ktora mi to wszystko rysuje:

...
bufferGraphics.clearRect(0, 0, 100, 200);
bufferGraphics.drawImage(...)
bufferGraphics.drawImage(...)
...
g.drawImage(offscreen, 0, 0, this);
...

--
pozdrawiam Mazi





clyde - 01-04-2006 00:21

  Mazi napisał(a):
> Witam
> Mam problem, z ktorym walcze juz od jakiegos czasu i nie moge sobie
> poradzic. Chodzi mi mianowicie o wyeliminowanie efektu "przerysowywania" w
> grze Tetris. Efekt ten objawia sie tym ze jest juz namalowany klocek w nowym
> polozeniu a jeszcze widzimy jego stare polozenie. Myslalem ze podwojne
> buforowanie wyeliminuje ten efekt ale niestety nie. Efekt przerysowania
> pojawia sie rzadko ale chcialbym go calkowicie wyeliminowac. Ma on miejsce w
> momencie, kiedy przesuwamy klocek strzalka z klawiatury i w tym samym
> momencie watek, ktory przesuwa klocek w dol, takze przesuwa klocek - czyli
> nastepuje wywolanie metody repaint() praktycznie w tym samym czasie.
> Probowalem z synchronizajcja bloku kodu w metodzie paint(), wstrzymywaniem:
> wait - notify ale niestety nie pomaga. Moze ktos walczyl z podobnym
> problemem i ma jakies doswiadczenia?
> Bede wdzieczny za wszelkie sugestie.
>
> ponizej fragment metody paint, ktora mi to wszystko rysuje:
>
> ...
> bufferGraphics.clearRect(0, 0, 100, 200);
> bufferGraphics.drawImage(...)
> bufferGraphics.drawImage(...)
> ...
> g.drawImage(offscreen, 0, 0, this);
> ...
>

;)
Cos namieszales. Po pierwsze z opisu nic nie wynika. Mysle ze problem
lezy w podejsciu do problemu.

Nie wiem jak reprezentujesz klocki, ale pierwsza i jedyna sugestia to by
odseparowac logike gry od przerysowania i wywolani typu keypressed.
keypressed niech nic nie rysuje, po prostu niech watek przerysowuje
wszystko z jakas czestotliwoascia i zarzadza logika gry, a keypressed
wykozystaj tylko i wylacznie jako interfejs, ktory przesyla informacje
dla petli glownej. Juz od niej niech zalezy co przesunac i gdzie, a w
paint TYLKO wizualizuj.

--

clyde




kukems - 03-04-2006 00:08

  Mazi wrote:

> Witam
> Mam problem, z ktorym walcze juz od jakiegos czasu i nie moge sobie
> poradzic. Chodzi mi mianowicie o wyeliminowanie efektu "przerysowywania" w
> grze Tetris. Efekt ten objawia sie tym ze jest juz namalowany klocek w
> nowym polozeniu a jeszcze widzimy jego stare polozenie. Myslalem ze
> podwojne buforowanie wyeliminuje ten efekt ale niestety nie. Efekt
> przerysowania pojawia sie rzadko ale chcialbym go calkowicie wyeliminowac.
> Ma on miejsce w momencie, kiedy przesuwamy klocek strzalka z klawiatury i
> w tym samym momencie watek, ktory przesuwa klocek w dol, takze przesuwa
> klocek - czyli nastepuje wywolanie metody repaint() praktycznie w tym
> samym czasie. Probowalem z synchronizajcja bloku kodu w metodzie paint(),
> wstrzymywaniem: wait - notify ale niestety nie pomaga. Moze ktos walczyl z
> podobnym problemem i ma jakies doswiadczenia?
> Bede wdzieczny za wszelkie sugestie.
>
> ponizej fragment metody paint, ktora mi to wszystko rysuje:
>
> ...
> bufferGraphics.clearRect(0, 0, 100, 200);
> bufferGraphics.drawImage(...)
> bufferGraphics.drawImage(...)
> ...
> g.drawImage(offscreen, 0, 0, this);
> ...
>

Skorzystaj z renderowania aktywnego:

http://java.sun.com/docs/books/tutor...rendering.html

--
Pozdrawiam
kukems
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql]Numerator wiersza / uniknięcie podwójnego ORDER BY [MySQL] Dostaję podwójny wynik wyszukiwania. Co jest ? [postgresql] Podwojne GROUP BY z roznymi warunkami podwojny (?) select na jednej tabeli Jak wylowic jeden z podwojnych rekordow ? [MySQL]Podwójny index? Podwojne sortowanie ROLAND FJ-540 i przerywające głowice Re: Przerysowanie mapy - jak najlepiej? z cyklu - PEREłKI ;-)...
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • sulimczyk.pev.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com