Cannon Fodder Opublikowano 24 Listopada 2009 Udostępnij Opublikowano 24 Listopada 2009 Mam 50 spritów (gif) załadowanych z zewnętrznego katalogu: wall1.gif wall2.gif wall3.gif ... wall50.gif czy jest jakiś łatwiejszy sposób wyrysowania ich automatycznie w jakiejś pętli niż tak: GML draw_sprite(picture('wall1.gif'),image_index,0,y); draw_sprite(picture('wall2.gif'),image_index,5,y); draw_sprite(picture('wall3.gif'),image_index,10,y); ... draw_sprite(picture('wall50.gif'),image_index,250,y); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 24 Listopada 2009 Udostępnij Opublikowano 24 Listopada 2009 spróbuj tak (nie mam pewności, czy to będzie działać): GML (ladowanie spritow) for(i=1; i<=50; i+=1) global.spr_wall=sprite_add("wall"+string(i)+".gif", ...); GML (rysowanie) for(i=1; i<=50; i+=1) draw_sprite(global.spr_wall,image_index,(i-1)*5,y); poza tym mam nadzieję, że ładujesz te sprity przed roomem/grą, a nie ciągle? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 24 Listopada 2009 Udostępnij Opublikowano 24 Listopada 2009 spróbuj tak (nie mam pewności, czy to będzie działać): GML (ladowanie spritow)for(i=1; i<=50; i+=1) global.spr_wall=sprite_add("wall"+string(i)+".gif", ...); GML (rysowanie)for(i=1; i<=50; i+=1) draw_sprite(global.spr_wall,image_index,(i-1)*5,y); poza tym mam nadzieję, że ładujesz te sprity przed roomem/grą, a nie ciągle? A nie powinno być znaczników { i } ? Po for(i=1; i<=50; i+=1) i na zakończenie petli? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 24 Listopada 2009 Udostępnij Opublikowano 24 Listopada 2009 nie jest potrzebne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 24 Listopada 2009 Udostępnij Opublikowano 24 Listopada 2009 Objęcie kodu nawiasami klamrowymi jest potrzebne gdy pętla (lub warunek) mają dotyczyć bloku kodu. Jeśli się je pominie to pętla obejmie tylko pierwszą instrukcję po niej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cannon Fodder Opublikowano 24 Listopada 2009 Autor Udostępnij Opublikowano 24 Listopada 2009 spróbuj tak (nie mam pewności, czy to będzie działać): GML (ladowanie spritow)for(i=1; i<=50; i+=1) global.spr_wall=sprite_add("wall"+string(i)+".gif", ...); GML (rysowanie)for(i=1; i<=50; i+=1) draw_sprite(global.spr_wall,image_index,(i-1)*5,y); poza tym mam nadzieję, że ładujesz te sprity przed roomem/grą, a nie ciągle? O to mi chodziło :D Dziękuję Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cannon Fodder Opublikowano 24 Listopada 2009 Autor Udostępnij Opublikowano 24 Listopada 2009 a jeśli nie mam jednego obrazka (nie dlatego że usunąłem tylko po prostu chcę mieć tam lukę) np. wall25.gif i pętla rysuje po kolei i dochodzi do i=25 to wywala " Trying to draw non-existing sprite. ". A ja bym chciał żeby pętla (skoro nie było nr 25) poleciała dalej i wyrysowała 26, 27, 28 itd. Macie na to jakiś pomysł ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 24 Listopada 2009 Udostępnij Opublikowano 24 Listopada 2009 if(!sprite_exists(global.spr_wall))continue; ale to i tak wolne rozwiazanie, szybsze wiaze sie z ustawianiem wartosci tego globala na -1 podczas kasowania sprajta, i wtedy: if(global.spr_wall<0)continue; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cannon Fodder Opublikowano 24 Listopada 2009 Autor Udostępnij Opublikowano 24 Listopada 2009 if(!sprite_exists(global.spr_wall))continue; ale to i tak wolne rozwiazanie, szybsze wiaze sie z ustawianiem wartosci tego globala na -1 podczas kasowania sprajta, i wtedy: if(global.spr_wall<0)continue; Dobre rozwiązanie :thumbsup: Nie rozumiem tylko drugiej części podpowiedzi na temat wartości tego globala na -1 Korzystanie z pierwszej formuły będzie spowalniać grę ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cannon Fodder Opublikowano 25 Listopada 2009 Autor Udostępnij Opublikowano 25 Listopada 2009 A jakbym chciał teraz odwołać się do jednego obrazka, żeby był narysowany po nazwie pliku, a nie po numerze ze zbioru to jak ma to wyglądać? draw_sprite(...i co tu dalej ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 25 Listopada 2009 Udostępnij Opublikowano 25 Listopada 2009 No, nie. Możesz rysować sprite'y tylko odwołując się do zmiennych, którym "przypisane sa obrazki". Jeśli chcesz ładować pliki po nazwie, to zobacz przykład loadera Tymona. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cannon Fodder Opublikowano 25 Listopada 2009 Autor Udostępnij Opublikowano 25 Listopada 2009 jasna sprawa, a teraz jeśli chodzi o przykład Tymona jak poprawnie napisać wzór np. GML sprite_index = picture('wallX.gif'); aby X było string'iem zmiennych ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 25 Listopada 2009 Udostępnij Opublikowano 25 Listopada 2009 Funkcja string() zamienia zmienne liczbowe na stringi: 'wall'+string(X)+'.gif' Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cannon Fodder Opublikowano 25 Listopada 2009 Autor Udostępnij Opublikowano 25 Listopada 2009 Fakt działa, ja próbowałem ze stringiem tylko, że w cudzysłowiu (nie wiem po co) i nie szło :-) 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ę