Skocz do zawartości

Rysowanie sprite z surface


Armez
Przejdź do rozwiązania Rozwiązane przez I am vader,

Rekomendowane odpowiedzi

Albo jestem jakiś głupi albo ślepy albo oba na raz bo nigdzie nie mogę znaleźć rozwiązania tego. Otóż chcę zrobić sprite z surfac-a jednak wszystko kończy się informacją

not set before reading it.

Jakbym cały czas coś źle wpisywał. Oto kod jaki mam.

if surface_exists(global.surf)
{
surface_set_target(global.surf);
if a=0 {draw_circle_colour(x,y,g/6,global.tt,global.tt,0)};
if a=1 {draw_circle_colour(x,y,g/6,aa,aa,0)};
}
else
{
global.surf = surface_create(225,352);
surface_set_target(global.surf);
if a=0 {draw_circle_colour(x,y,g/6,global.tt,global.tt,0)};
if a=1 {draw_circle_colour(x,y,g/6,aa,aa,0)};
}
sprite70 = sprite_create_from_surface(global.surf, 0, 0, 225, 400, true, true, 112.5, 200);
surface_reset_target();

Surface został zrobiony poprawnie bo wszystkie inne opcje działają.

Proszę o pomoc... najlepiej taką co wytknie mi jakąś oczywistość i pokaże jakim kretynem jestem XD

Odnośnik do komentarza
Udostępnij na innych stronach

3 minuty temu, I am vader napisał:

Może daj surface_reset_target() przed stworzeniem sprite'a.

To jedyne co mogłoby być nie tak, bo starasz się "dorwać do" surface'a, gdy ten jeszcze jest w trakcie edycji.

 

Ustawiłem w taki sposób
 

surface_reset_target();
sprite70 = sprite_create_from_surface(global.surf, 0, 0, 225, 400, true, true, 112.5, 200);

I nadal jest ten sam problem :/

Odnośnik do komentarza
Udostępnij na innych stronach

robisz to w evencie draw, czy jakims innym? i na jakies platformie to uruchamiasz?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Rozwiązanie

Rysowanie do surface nie wymaga draw. Ale skoro to nie naprawia problemu, podrzuć PELEN błąd, może jest coś czego nie zauważyłeś?

 

Edit:

A walnę INB4 bo czemu nie

INB4 zmienna nie istnieje bo jej nie zdefiniowałeś lub zadeklarowałeś.

Odnośnik do komentarza
Udostępnij na innych stronach

jest szansa, ze implementacja gmsowa surfaces nie flushuje komend renderowania po resecie, wiec standardowo skrypty nie zatrzymuja sie az skonczy sie rendering - rozwiazaniem na to jest tworzenie sprajta dopiero w nastepnym draw evencie (ustawiasz sobie lokalnie flage "make_sprite" na true gdy narysujesz do surface i w draw "if make_sprite { make_sprite = false; tworz_sprite_z_surface(); }

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
22 godziny temu, Armez napisał:

Albo jestem jakiś głupi albo ślepy albo oba na raz bo nigdzie nie mogę znaleźć rozwiązania tego. Otóż chcę zrobić sprite z surfac-a jednak wszystko kończy się informacją


not set before reading it.

Jakbym cały czas coś źle wpisywał. Oto kod jaki mam.


if surface_exists(global.surf)
{
surface_set_target(global.surf);
if a=0 {draw_circle_colour(x,y,g/6,global.tt,global.tt,0)};
if a=1 {draw_circle_colour(x,y,g/6,aa,aa,0)};
}
else
{
global.surf = surface_create(225,352);
surface_set_target(global.surf);
if a=0 {draw_circle_colour(x,y,g/6,global.tt,global.tt,0)};
if a=1 {draw_circle_colour(x,y,g/6,aa,aa,0)};
}
sprite70 = sprite_create_from_surface(global.surf, 0, 0, 225, 400, true, true, 112.5, 200);
surface_reset_target();

Surface został zrobiony poprawnie bo wszystkie inne opcje działają.

Proszę o pomoc... najlepiej taką co wytknie mi jakąś oczywistość i pokaże jakim kretynem jestem XD

 

 

@Armez:

 

if (!surface_exists(global.surf)) {
	global.surf = surface_create(225,352);
}

surface_set_target(global.surf);
var _c = (a == 0) ? global.tt : aa;
draw_circle_colour(x,y,g/6,_c,_c,0);
surface_reset_target();

sprite70 = sprite_create_from_surface(global.surf, 0, 0, 225, 400, true, true, 112.5, 200);

Do tego:

1) w GMS surface da się zmieniać tylko w evencie draw
2) jak robisz to co krok, to będziesz mieć milion spritów za chwilę
3) nie musisz tworzyć sprite, możesz bezpośrednio rysować surface na ekranie

4) dlaczego sprite jest większe niż surface ?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...