TO_mek Opublikowano 10 Lutego 2011 Udostępnij Opublikowano 10 Lutego 2011 Witam! Potrzebuje zrobić przesuwany tekst w kilku wariantach. Tekst ma się wyświetlać na sprajcie telewizora (o wielkości 100x60) lub w wersji trudniejszej na matrycy lcd (większej). Jak zrobić następujące warianty: Wariant 1 Tekst przewija się od prawej do lewej, gdy dotyka krawędzi ekranu tv znika - czyli standardowy scroll tekstu jakie nie raz widać w serwisach informacyjnych. Wariant 2 Tekst przewijany na funkcji sinus, litery cały czas w pionie Wariant 3 Jak w wariancie 2 ale litery "pochylają" się pod odpowiednim kątem Wariant 4 Jak w wariantach 2 i 3 ale tekst przewija się nie po funkcji sinus a po ścieżce (path) Wariant 5 Wyświetlanie na ekranie tego tv animacji flash zrobionej w swishu W wersji na "matrycę LCD" teksty powinny składać się z punktów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 10 Lutego 2011 Udostępnij Opublikowano 10 Lutego 2011 Surfacey! GML (Create) lcdScreen = surface_create( 100, 100 ); lcdScreenWrapX = 10; lcdScreenWrapY = 10; lcdTextWrap = 0; surface_set_target( lcdScreen ); draw_clear( $4080FF ); surface_reset_target(); GML (Step) var _x, _y; surface_set_target( lcdScreen ); draw_clear( $4080FF ); _x = (mouse_x-x) - lcdScreenWrapX; _y = (mouse_y-y) - lcdScreenWrapY; // Taka sobie strzałeczka draw_arrow( _x+10, _y+14, _x, _y, 10 ); // Tekst na LCD draw_set_font( fLCD ); // Jakiś font przypominający LCD - Monospace! draw_text_color( floor(lcdTextWrap/10)*10, 50, "Simple test", c_green, c_green, c_green, c_green, 1 ); surface_reset_target(); lcdTextWrap -= 0.5; if( lcdTextWrap < -110 ) lcdTextWrap = 110; GML (Draw) draw_surface( lcdScreen, x+lcdScreenWrapX, y+lcdScreenWrapY ); draw_sprite( sprite_index, 0, x, y ); Co do pozostałych pytań, wystarczą przemiany dot. rysowania na surface (lcdScreen) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 10 Lutego 2011 Autor Udostępnij Opublikowano 10 Lutego 2011 GML _x = (mouse_x-x) - lcdScreenWrapX; _y = (mouse_y-y) - lcdScreenWrapY; // Taka sobie strzałeczka draw_arrow( _x+10, _y+14, _x, _y, 10 ); Zarówno współrzędne myszy jak i strzałka są niemal niezbędne w przykładzie ;) Ok. To rozwiązuje wariant 1 i przy zastosowaniu odpowiedniego fontu LCD na upartego wersje na matrycy LCD (ale nie o to mi chodziło a o rysowanie punkt po punkcie - coś jakby tablica 100x60 a najlepiej większa i włączanie/wyłączanie odpowiednich punktów w celu uzyskania napisu bądź grafiki czyli efektu takiego jak na prawdziwych reklamach LCD) Co do wariantów 2-5 nadal nie wiem jakby się za to zabrać, tzn. już nie o samo wyświetlanie bo akurat Twój przykład to rozwiązuje, ale o samo rysowanie tekstu na sinusoidzie czy na ścieżce. Wariant 5 to przypuszczam zupełnie odrębna historia (czy GM ma wbudowaną obsługę flasha?) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 11 Lutego 2011 Udostępnij Opublikowano 11 Lutego 2011 5. GM nie obsługuje flasha, może istnieje jakiś DLL... ;p Co do 2, wystarczą funkcje. GML //f(x) = sin(x)*10; var _x, _y; _x = degtorad( jakas_wartosc /*x*/ ); _y = sin(_x)*10; draw_...( x, y+_y, ... ) Jeśli chodzi o LCD, po co utrudniać sobie życie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rafik01 Opublikowano 11 Lutego 2011 Udostępnij Opublikowano 11 Lutego 2011 Co do 5. O ile to zwykła animacja to wyrenderuj ją jako gifa czy avi. Ja używam Adobe Flash Proffesional CS5 i wiem, że jest taka możliwość. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 11 Lutego 2011 Autor Udostępnij Opublikowano 11 Lutego 2011 Co do 5. O ile to zwykła animacja to wyrenderuj ją jako gifa czy avi. Ja używam Adobe Flash Proffesional CS5 i wiem, że jest taka możliwość. Kurcze dałbym sobie rękę uciąć że kilka dni temu czytałem jakiś wątek w którym Gnysek pisał o animacjach flash w GMie tylko że problem był pełny ekran (że działało tylko na full screen albo odwrotnie) ale teraz nie potrafię tego znaleźć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 11 Lutego 2011 Autor Udostępnij Opublikowano 11 Lutego 2011 5. GM nie obsługuje flasha, może istnieje jakiś DLL... ;p Co do 2, wystarczą funkcje. GML //f(x) = sin(x)*10; var _x, _y; _x = degtorad( jakas_wartosc /*x*/ ); _y = sin(_x)*10; draw_...( x, y+_y, ... ) Powyższe powoduje tylko, że tekst w całości przesuwa się w górę/dół w rytm sinusoidy. Ja potrzebuje efektu gdzie każda z liter będzie traktowana osobno i na ekranie uzyskam "wykres sinusoidy z liter" -wariant 2. W wariancie 3 dodatkowo litery powinny się pochylać pod odpowiednim kątem (czyli ich podstawa powinna być "doklejona" do niewidocznej linii sinusoidy). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 12 Lutego 2011 Udostępnij Opublikowano 12 Lutego 2011 Spróbuj każdą literę rysować z osobna za pomocą funkcji 'draw_text_transformed', oraz pokierować owe na funkcji 'f(x) = sin(x)*10'. Co do obrotu, musisz 'przewidzieć' jaka będzie następna wysokość 'x+1', następnie funkcją 'point_direction' pobrać kierunek oraz warto wiedzieć iż funkcja 'draw_text_transformed' przyjmuje parametr 'angle'. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 13 Lutego 2011 Autor Udostępnij Opublikowano 13 Lutego 2011 Spróbuj każdą literę rysować z osobna za pomocą funkcji 'draw_text_transformed', oraz pokierować owe na funkcji 'f(x) = sin(x)*10'. Co do obrotu, musisz 'przewidzieć' jaka będzie następna wysokość 'x+1', następnie funkcją 'point_direction' pobrać kierunek oraz warto wiedzieć iż funkcja 'draw_text_transformed' przyjmuje parametr 'angle'. Już wcześniej myślałem o draw_text_transformed z parametrem angle. Czyli pozostaje mi odczytywać ze stringa znak po znaku i rysować każdy z osobna. A w jaki sposób mogę odczytać długość stringa ale nie chodzi mi o ilość znaków (string_length(str)) tylko o rzeczywistą długość w pikselach przy wybranym foncie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Shockah Opublikowano 13 Lutego 2011 Udostępnij Opublikowano 13 Lutego 2011 string_width 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ę