DelphiX-Tutorial für Anfänger
Ursprünglich erstellt von MiGa Mail Homepage
(Danke!!)
Design-Anpassung und Veränderung von Simon
Kapitel 3
Sie müssen das Beispiel des vorherigen Kapitel übernehmen.
Bilder bewegen
Um ein Bild auf der DXDraw Oberfläche zu bewegen, müssen wir nur
immer die X bzw. Y-Koordinate des
DXImageList1.Items[0].draw(dxdraw1.surface,0,0,0) Befehls ändern.
Dazu werden wir die DXTimer Komponente benutzen. Als erstes
brauchen wir aber zwei Variable, die die X, Y Werte übergeben. Die
anderen zwei Variablen werden für die Bewegung benötigt. Dazu
schreiben wir folgendes: var
Form1: TForm1;
x:integer=0;
y:integer=0;
vx:integer=1;
vy:integer=1;
implementation
Da wir nicht wollen, dass das Bild nur angezeigt wird, wenn wir
auf die Oberfläche drücken, entfernen wir den Code aus dem OnClick
Ereignis und schreiben in das OnTimer Ereignis unseres Timer
folgendes: procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
if not DXDraw1.CanDraw then
Exit; {dürfte bekannt}
x:=x+vx; {Bewegung um vx in die X-Richtung}
y:=y+vy; {Bewegung um vy in die Y-Richtung}
if x<=0 then
vx:=vx * - 1;
{wenn das Bild am linken Rand ist, soll es sich in die Gegenrichtung bewegen}
if x>=dxdraw1.width-dximagelist1.Items[0].width then
vx:=vx * - 1;
{wenn das Bild am rechten Rand ist, soll es sich in die Gegenrichtung bewegen}
if y<=0 then
vy:=vy * - 1;
{wenn das Bild oben ist, soll es sich in die Gegenrichtung bewegen}
if y>=dxdraw1.height-dximagelist1.Items[0].height then
vy:=vy * - 1;
{wenn das Bild unten ist, soll es sich in die Gegenrichtung bewegen}
dximagelist1.Items[0].draw(DXDraw1.Surface, x,y, 0); {dürfte bekannt}
DXDraw1.Flip; {dürfte bekannt}
end;
Durch die oben geschriebenen if-Bedingungen bewirken wir, dass
das Bild im Fenster herum"bounced" (sich nicht aus dem Fenster
bewegt sondern sich zurück bewegt). Sie können die
Geschwindigkeit des Timer beliebig einstellen, in dem sie die
Eigenschaft Interval ändern (in Millisekunden).
Wenn sie jetzt F9 drücken, bewegt sich ihr Bild hin und her.
<<Vorheriges
Kapitel>> <<Nächstes
Kapitel>>
|