Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro, C++] Wyświetlanie tła i animacji jednocześnie.

Ostatnio zmodyfikowano 2010-05-19 23:26
Autor Wiadomość
lemis.aryl
Temat założony przez niniejszego użytkownika
[Allegro, C++] Wyświetlanie tła i animacji jednocześnie.
» 2010-05-18 22:02:09
Zrobiłem animację według opisu z kursu z tej strony i wyświetliłem ją tak:
C/C++
blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
I do tego chciałem, żeby pojawiło mi się tło i nie mając innego pomysłu zrobiłem to tak:
C/C++
blit( tlo, screen, 0, 0, 0, 0, 640, 480 );
Efekt jest taki, że tło mruga na zmianę z animacją. Co zrobić, żeby tak się nie działo.
P-16957
kamillo121
» 2010-05-18 22:17:55
Wszystko kopiuj do bufora (pierw tło potem jakieś inne elementy) następnie wyświetlaj bufor http://kursy.ddt.pl/?LessonId=153
P-16958
lemis.aryl
Temat założony przez niniejszego użytkownika
» 2010-05-18 23:46:43
Robiąc animację ładuję obrazki do bufora:
C/C++
if( frame < 20 ) { draw_sprite( bufor, ludek0, ludek_x, ludek_y ); }
else if( frame >= 20 && frame < 40 ) { draw_sprite( bufor, ludek1, ludek_x, ludek_y ); }
else if( frame >= 40 && frame < 60 ) { draw_sprite( bufor, ludek2, ludek_x, ludek_y ); }
else if( frame >= 60 && frame < 80 ) { draw_sprite( bufor, ludek3, ludek_x, ludek_y ); }
po wpisaniu:
C/C++
masked_blit( tlo, bufor, 0, 0, 0, 0, 640, 480 )
pokazywało mi tylko tło.

Próbowałem zrobić kilka buforów:
C/C++
masked_blit( tlo, bufor_wys, 0, 0, 0, 0, 640, 480 );
masked_blit( bufor, bufor_wys, 0, 0, ludek_x, ludek_y, 100, 100 );
blit( bufor_wys, screen, 0, 0, 0, 0, 640, 480 );
bufor - dla animacji
bufor_tlo - dla tła
bufor_wys - do wyświetlania

Pojawiło mi się tło, ale zamiast animacji pojawiał mi się biały kwadrat(100,100),
a w nim moja animacja. Gdy chciałem nią poruszyć biały kwadrat przesuwał się wolniej od animacji i w końcu animacja wychodziła z niego, znikając.

Animacja pojawiała się tylko wtedy gdy w:
C/C++
masked_blit( bufor, bufor_wys, 0, 0, ludek_x, ludek_y, 100, 100 );
zamiast "0,0" wpisałem liczby od 20 do 120. Dla innych liczb pojawia się tylko biały kwadrat.

P-16962
DejaVu
» 2010-05-19 12:10:53
Najpierw rysuj tło, a potem pozostałe obiekty na buforze. Na końcu przekopiuj bufor na ekran i finito.
P-16979
lemis.aryl
Temat założony przez niniejszego użytkownika
» 2010-05-19 12:26:21
Czy tak miałem zrobić?:

C/C++
blit( bufor_tlo, screen, 0, 0, 0, 0, 640, 480 );
blit( bufor, screen, ludek_x, ludek_y, ludek_x, ludek_y, 100, 100 );
Tło przestało mrugać ale jeszcze trochę mruga moja postać(animacja).

Jak usunąć tło z bitmapy? Chciałbym, żeby wyświetlało mi samą postać bez jego tła( postać pojawia się w białym polu z którym wędruje po ekranie).
P-16983
DejaVu
» 2010-05-19 12:30:09
Dostałeś odpowiedź słowną w 100% poprawną. Jest kurs Allegro, który to demonstruje, a jeśli nie to z pewnością to dobrze tłumaczy. Jest również pełno przykładów na forum, które wykorzystują buforowanie. Wysil się trochę...
P-16984
lemis.aryl
Temat założony przez niniejszego użytkownika
» 2010-05-19 12:35:48
Ok. Odnośnie buforowania jeszcze poszukam. A jeśli chodzi o te usuwanie tła?
Jak zrobić żeby znikło?
P-16986
DejaVu
» 2010-05-19 12:42:10
Tło zawsze jakieś jest - chociażby czarne. Jeżeli Tło = obrazek to zamiast obrazka wyświetlaj czarny prostokąt (jeżeli czarny prostokąt = puste dla Ciebie).
P-16988
« 1 » 2
  Strona 1 z 2 Następna strona