Armez Opublikowano 11 Marca 2018 Udostępnij Opublikowano 11 Marca 2018 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 Więcej opcji udostępniania...
I am vader Opublikowano 11 Marca 2018 Udostępnij Opublikowano 11 Marca 2018 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Armez Opublikowano 11 Marca 2018 Autor Udostępnij Opublikowano 11 Marca 2018 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 Więcej opcji udostępniania...
PsichiX Opublikowano 11 Marca 2018 Udostępnij Opublikowano 11 Marca 2018 robisz to w evencie draw, czy jakims innym? i na jakies platformie to uruchamiasz? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Armez Opublikowano 11 Marca 2018 Autor Udostępnij Opublikowano 11 Marca 2018 Teraz, PsichiX napisał: robisz to w evencie draw, czy jakims innym? i na jakies platformie to uruchamiasz? Jest to w evencie draw więc powinno być dobrze. Odpalam na Widnowsie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rozwiązanie I am vader Opublikowano 11 Marca 2018 Rozwiązanie Udostępnij Opublikowano 11 Marca 2018 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 Więcej opcji udostępniania...
PsichiX Opublikowano 11 Marca 2018 Udostępnij Opublikowano 11 Marca 2018 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 Więcej opcji udostępniania...
I am vader Opublikowano 11 Marca 2018 Udostępnij Opublikowano 11 Marca 2018 Szczerze w to wątpię zawsze generuje surface'y "w locie" i są responsywne. Strzelam że zmienna nie istnieje i kod wykrzacza się na 1szej lini(czytaj: mój inb4). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Armez Opublikowano 11 Marca 2018 Autor Udostępnij Opublikowano 11 Marca 2018 Ooookej. I am vader miałeś racje. Tzn. zmienna istniała ale nie wiedzieć czemu nie współpracowała. Wystarczyło zmienić ją na globalną. Dziękuje za pomoc. Dobranoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 12 Marca 2018 Administratorzy Udostępnij Opublikowano 12 Marca 2018 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę