Animacja... i jeszcze kilka pytań.

0

mam kodzik na animację która wyświetla napis litera po literze:

var
DText : String;
Done : Boolean;

=====================

private
procedure DrawAnim(X, Y : Integer);
procedure SteepBySteep(X, Y : Integer);

======================

procedure TMainForm.SteepBySteep(X, Y: Integer);
var
TextLength, I: Integer;
begin
Done := TRUE;
TextLength := Length(DText);

with Canvas do
begin
for I := 1 to TextLength do
begin
Application.ProcessMessages;
Sleep(100);
Brush.Style := bsClear;
Font.Name := 'Courier New';
Font.Color := clWhite;
Font.Size := 16;
TextOut((X + i * 16), Y, DText[i]);
Brush.Style := bsClear;
Font.Color := clBlack;
TextOut((X + i * 16) -2, Y -2, DText[i]);
end;
end;
end;

ale niestety to pojawi się jeden raz i koniec, a jak zrobić żeby jeśli tekst zostanie wyświetlony do końca to wszystko idzie od nowa.

P.S

Kod ten pochodzi z kursu. Więc nie myślcie, że jestem taki genialny :-D :-D i wszystko sam wymysliłem (bo w życiu bym na to ni wpadł, dla mnie Canvas i cała grafika to czarna magia) .

[dopisane]

moderatorzy tryją, żeby pisać wszystkie pytania w jednym poście. Tylko, że jeśli mi ktoś odpoisze, że nikomu się nie chce tego czytać to zawsze każe pytanie bedę zadawał w osobnym poście.
A więc.

mam zmienną integer (wartość 100);

i chcę zrobić tak, że jeśli będzie mniejsza lub równa zero to button się wyłaczy. Więc w OnCreate mam:

if zmienna

0

<quote>mam zmienną integer (wartość 100);

i chcę zrobić tak, że jeśli będzie mniejsza lub równa zero to button się wyłaczy. Więc w OnCreate mam:

if zmienna

0

Jak zrobić taż, że x w 60% wypadnie na 3, 30% na 2, 5%, na 1, 5% na 0?

l := random(100);
if (l>0)and(l5)and(l10)and(l40)and(l

0

dzięki Wan. Wszystko OKI. :-)

Ale czy ktoś pomoże mi z animacją?

0

Napisalem procedurke od nowa, bo nie lubie poprawiac po kims(w szczegolnosci, gdy brakuje jednej procedurki:) ) :)

walnij zmienna globalna I
dla OnCreate formy

I := 0;
Form1.DoubleBuffered:=True;

walnij Timera na forma i dla Timer pacnij:

const
X = 200;
Y = 300;
S = 'player15';

begin
with Image1.Canvas do
begin
Inc(I);
if I > Length(S) then
begin
I := 1;
Brush.Style := bsClear;
Brush.Color := clwhite;
Pen.Color := clwhite;
Rectangle(0, 0, Image1.Width, Image1.Height);
end;
Brush.Style := bsSolid;
Font.Name := 'Courier New';
Font.Color := clred;
Font.Size := 16;
TextOut(X + I*16, Y, Copy(S, I, 1));
end;
end;

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