Skocz do zawartości

przewijany tekst jak to zrobić


pawelpc

Rekomendowane odpowiedzi

Po prostu robisz sprite długiego tekstu. Następnie tworzysz na przykład 3 okienka. Jedno to nie wiem jakiś opis, w środku będzie tekst a na górze na przykład tytuł. Tekst ma depth 1, a środkowe okienko depth 2. Reszta 0. Teraz umieszczasz tekst w środkowym okienku. Widać tylko tę część która jest w okienku. Pozostaje tylko dorobić pasek. Że jak jedzie w dół to tekst idzie na dół i odwrotnie. Pozdrawiam :)

Odnośnik do komentarza
Udostępnij na innych stronach

GML
// Create

width = 200;

step = 0;

text = "To jakistam tekst on sie bedzie przewijal, lol";

d_text = 0;

 

GML
// Draw

if( step < string_length( text ) ) { step += 1; off = 0; }

else if( string_width( d_text ) > 6 ) { step += 1; off += 6; }

else step = 0;

 

d_text = string_copy( text, 0, step );

while( string_width( d_text ) + off > width )

{

d_text = string_copy( d_text, 2, string_length( d_text ) );

}

 

draw_set_halign( fa_right );

draw_text( x - off, y, d_text );

draw_set_halign( fa_left );

 

EDIT:

 

 

Jeżeli na surface:

GML
// Create

width = 200;

 

surf = surface_create( 30, width );

text = "To jakistam tekst on sie bedzie przewijal, lol";

off = 0;

GML
// Step

if( off < string_width( text ) + width ) off += 1;

else off = 0;

 

surface_set_target( surf );

draw_clear_alpha( 0, 0 );

draw_text( off, 0, text );

surface_reset_target();

GML
// Draw

draw_surface( surf, x, y );

GML
// Game end

surface_free( surf );
Na surface przewija się w prawo, a na stringach w lewo :P Ale ( na surface przynajmniej ) łatwo to zmienić :)

 

 

EDIT: Ech, 3 poprawki :P Pomyliło mi się, przepraszam za to.

Odnośnik do komentarza
Udostępnij na innych stronach

1.na stringach

-nie równo

GML
draw_set_halign( fa_right );

draw_text( x - off, y, d_text );

draw_set_halign( fa_left );

do draw dajemy

-nikt za szybko nie przeczyta

2.na surface

-pokazuje tylko jakieś dziwne pixele

 

GML
draw_surface( x, y, surf );

powinno być tak:

GML
draw_surface( surf, x, y );

inaczej wywali błąd

Odnośnik do komentarza
Udostępnij na innych stronach

@Nobody w tedy pokazuje tylko "To" w okienku 32x32 przewija się ale reszty słów nie ma

@copoconaco trochę woniej

GML
text_l=string_length(text)+1;

i to +1

żadnej przerwy między końcem a początkiem

ma być między punktem A i punktem B

a nie od punktu A do tylu ile jest znaków

 

a ogólnie dodam że jakby się dało bo mam wyświetlać nazwę jakiejś odtwarzanej piosenki i aby ten tekst był określany na bieżąco to by było lepiej :)

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ę...