animowany text

0

Już kiedyś piałem na ten temat ale dostałem dość niezrozumiałą odpowiedź> mianowicie - jak zrobić animowany tekst poruszający się z jakimś przyspieszeniem????

0

RadeG opisałem ci to wtedy dokładnie, nie wiem czego jeszcze chcesz...

0

Tak, ale tam gdzie trzeba było wpisać w "type" wywala błąd - czy mógłbyś jeszcze raz napisać proszę?

0

// globalnie :

type TLatajacyTekst=record
x, y : integer; // położenie naszego textu
v, a : real // prędkość, przyspieszenie

text : string;
end;

var lataj : TLatajacyTekst;

procedure form1.onCreate(...);
begin
// tu ustawiamy parametry
lataj.x := 0;
lataj.y := 0;
lataj.v := 0; // prędkość początkowa
lataj.a := 0.5 // prędkość przyspieszania
lataj.text := 'Hello World!';

end;

procedure onTimer(...);
begin
// tutaj wstaw sobie procedurkę czyszczącą tło pod tekstem

lataj.v := lataj.v + lataj.a; // przyspieszaj! 
lataj.x := round(lataj.x + lataj.v);  
bitmap.canvas.textOut(lataj.x, lataj.y, lataj.text); // rysuj! 

end;

dzięki takiemu rozwiązaniu masz pęłna kontrolę nad ruchem, tzn jeśli chcesz

  • bezruch : a:=0; v:=0;
  • ruch jednostajny : a:=0; v:=jakaśliczba;
  • ruch jednostajnie przyspieszony : a:=jakaśliczba;

jeśli chcesz odwrócić ruch (przeciwny kierunek) to ustaw 'a' na ujemną liczbę;
/// CZY MOŻESZ NANIEŚC POPRAWKI/////

0

type TLatajacyTekst=record
x, y : integer; // położenie naszego textu
v, a : real; // prędkość, przyspieszenie

text : string;
end;

zapomniałem dodać średnika, teraz działa.. jeśli nadal będziesz miał problem, - pytaj.

0

jakiś błąd jest tutaj andrew
procedure onTimer(...);
begin
// tutaj wstaw sobie procedurkę czyszczącą tło pod tekstem

lataj.v := lataj.v + lataj.a; // przyspieszaj!
lataj.x := round(lataj.x + lataj.v);
bitmap.canvas.textOut(lataj.x, lataj.y, lataj.text); // rysuj!

end;

[dopisane]
i jaka jest ta procedurka czyszcząca???

0

bitmap.canvas.textOut(lataj.x, lataj.y, lataj.text); // rysuj!

zamień sobie "bitmap" na dowolny komponent posiadający canvas, tzn. moze to byc TForm, TImage, TPaintBox, jak chcesz do wyboru do koloru. A procedurkę czyszczącą zaraz dopisze.. tylko znajde..

o juz mam :

bitmap.Canvas.Brush.Color := rgb(0,0,0);
bitmap.Canvas.FillRect(bitmap.Canvas.ClipRect);

tu też zamień [b]bitmap[/b] na twój komonent, który odpowieda za wyświetlanie obrazu.

0

Jest chyba dość jasno wyjaśnione :)

0

Andrew - nie wkurzaj się - wszystko mi sięp opsuło. Czy mógłbyś podać mi źródła (proszę ) - w koncu jestem tylko szeregowym.

1 użytkowników online, w tym zalogowanych: 0, gości: 1