Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi DelphiX für Anfänger (2) (https://www.delphipraxis.net/37050-delphix-fuer-anfaenger-2-a.html)

Chegga 30. Dez 2004 10:55


DelphiX für Anfänger (2)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

hier also die Fortsetzung von Teil I.

Kapitel 3

Übernehmt das Beispiel aus DelphiX für Anfäner (1),
damit wir loslegen können.

Bilder bewegen

Um ein Bild auf der DXDraw Oberfläche zu bewegen, müssen wir 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 Variablen, die die X, Y Werte übergeben. Die anderen zwei Variablen werden für die Bewegung benötigt. Dazu schreiben wir folgendes:

Delphi-Quellcode:
var
  Form1: TForm1;
  x: integer=0;
  y: integer=0;
  vx: integer=1;
  vy: integer=1;

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 der DXDraw und schreiben in das OnTimer Ereignis unseres Timer folgendes:

Delphi-Quellcode:
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  if not DXDraw1.CanDraw then
    Exit;          //dürfte bekannt sein
  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 bekanntsein
  DXDraw1.Flip;    //dürfte bekannt sein
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).
Man kann die Geschwindigkeit des Timers beliebig einstellen,
in dem sie die Eigenschaft Interval ändert (in Millisekunden).

Nun startet das Programm mit Drücken auf F9
und das Bild bewegt sich hin und her.
(Siehe Beispielprogramm im Attachment)

MfG Marc

Hier geht es weiter zu DelphiX für Anfänger (3)

P.S.: Dieses Tutorial hat "MiGa" erstellt.
Es wurde von meiner Wenigkeit ein weing abgeändert. :wink:

[edit=Admin]Code-Tags in Delphi-Tags geändert. ;-) Mfg, Daniel[/edit]
[edit=sakura] Auf Wunsch Links zu den Tutorial 2 hinzugefügt. Mfg, sakura[/edit]

thepaul 7. Jan 2005 19:12

Re: DelphiX für Anfänger (2)
 
gehts noch weiter mit den tuts?

Oxmyx 7. Jan 2005 19:27

Re: DelphiX für Anfänger (2)
 
Wieso deklarierst du globale Variablen mit den Bezeichnern "x", "y", etc.? Das schreit ja nach späteren Fehlern.

Minz 11. Mär 2005 09:21

Re: DelphiX für Anfänger (2)
 
@oxmyx

weil das hier für das Verständnis gar nichts zur Sache tut, wie da was deklariert ist...

inherited 29. Apr 2006 17:11

Re: DelphiX für Anfänger (2)
 
Ohne meckern zu wollen, da fehlt ein
Delphi-Quellcode:
DXDraw1.Surface.Fill(clBlack);


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz