In diesem Artikel wird anhand von Beispielen beschrieben, wie mit Delphi der Aufprall eines Balls ähnlich dem Flippereffekt erzielt wird. Klicken Sie auf die Schaltfläche „Start“, und ein grüner Ball in der Form schlägt weiter und bewegt sich nach links und rechts, und seine Größe ändert sich ständig. Klicken Sie auf die Schaltfläche „Stop“, um den Ball zu stoppen. Ziehen Sie mit der Maus das Einstellelement unten rechts, um die Geschwindigkeit des Balls anzupassen.
Hier verwenden wir hauptsächlich Timer-Steuerung, Panel-Steuerung, TrackBar-Steuerung, SpinEdit-Steuerung, Formsteuerung und Schaltflächensteuerung, um dies zu erreichen. Der Schwerpunkt liegt auf Delphis Timer-Steuerung. Während das Programm läuft, ist das Steuerelement nicht sichtbar und kann nicht direkt manipuliert werden. Das Timer-Steuerelement löst in regelmäßigen Abständen automatisch das OnTimer()-Ereignis aus. In diesem Beispiel wird es verwendet, um das Ballbewegungsereignis auszulösen.
Designidee: Das Hauptproblem, das dieses Programm lösen soll, besteht darin, die Bewegung des Balls sowie die Geschwindigkeit und Größe des Balls während der Bewegung zu steuern. Verwenden Sie das OnTimer()-Ereignis des Timer-Steuerelements, um die Bewegung des Balls zu steuern. Verwenden Sie das TrackBar-Steuerelement und das SpinEdit-Steuerelement, um die Geschwindigkeit der Ballbewegung anzupassen. Der Ball wird durch das Shape-Steuerelement generiert.
eins. Neubau:
(1) Starten Sie das Delphi 6.0-Programm. Wählen Sie im Menü „Datei“ den Befehl „Neu“ und im Popup-Untermenü die Option „Anwendung“. Daraufhin wird das Fenster „Form1“ des neuen Projekts angezeigt.
(2) Wählen Sie im Menü „Datei“ den Befehl „Projekt speichern unter“, um das Dialogfeld „Einheit1 speichern unter“ aufzurufen. Wählen Sie im Listenfeld „Speichern in“ den Verzeichnisnamen aus, in dem die Fensterdatei gespeichert werden soll. Geben Sie den Dateinamen in das Bearbeitungsfeld „Dateiname“ ein, geben Sie hier „Einheit1“ ein und klicken Sie auf die Schaltfläche „Speichern“. um die oben genannten Optionen zu speichern.
(3) Nach der Ausführung des vorherigen Schritts wird das Dialogfeld „Projekt speichern unter“ angezeigt. Wählen Sie im Listenfeld „Speichern in“ den Verzeichnisnamen aus, in dem das Projekt gespeichert werden soll. Wählen Sie am besten das gleiche Verzeichnis wie in Schritt (2) aus und geben Sie den Dateinamen ein Um den Quellcode des Projekts zu speichern, geben Sie hier „Projekt1“ ein und klicken Sie auf die Schaltfläche „Speichern“, um die oben genannten Optionen zu speichern.
zwei. Einige Parametereinstellungen:
(1) Aktivieren Sie das Unit1-Fenster, setzen Sie im Bereich „Eigenschaften“ die Caption-Eigenschaft des Formulars auf „moving sphere“ und die Color-Eigenschaft auf „clMoneyGreen“.
(2) Wählen Sie auf der Seite „Standard“ die Option „Panel“, fügen Sie das Panel-Steuerelement in das Formular ein, passen Sie die entsprechende Größe und Position an und setzen Sie die Name-Eigenschaft des Steuerelements im Bedienfeld „Eigenschaften“ auf „Panel1“ und BevelInner auf „bvLowered“ festgelegt, BevelOuter auf „blNone“, BorderStyle auf „bsSingle“ und die Color-Eigenschaft auf „clSkyBlue“.
(3) Wählen Sie auf der Seite „System“ die Option „Timer“, fügen Sie dem Formular ein Timer-Steuerelement hinzu und setzen Sie im Bedienfeld „Objektinspektor“ dessen Interval-Eigenschaft auf 1 und die Name-Eigenschaft auf „Timer1“.
(4) Wählen Sie auf der Seite „Zusätzlich“ die Option „Form“, fügen Sie im Formular „Panel1“ ein Shape-Steuerelement hinzu, setzen Sie dessen Show Hint-Eigenschaft auf „True“ und die Hint-Eigenschaft auf „Sports Sphere“ im „Properties“-Panel Die Brush.Color-Eigenschaft ist ClLime und ihre Shape-Eigenschaft ist auf „slCircle“ festgelegt.
(5) Wählen Sie auf der Seite „Standard“ die Option „Schaltfläche“, fügen Sie dem Formular drei Schaltflächensteuerelemente hinzu und passen Sie deren entsprechende Größe und Position an. Stellen Sie die Beschriftungseigenschaften im Bereich „Eigenschaften“ auf „Start“, „Stopp“ und „Beenden“ ein.
(6) Wählen Sie auf der Win 32-Seite die Option „TrackBar“, fügen Sie das TrackBar-Steuerelement zum Formular hinzu und passen Sie die entsprechende Größe und Position an. Legen Sie die entsprechenden Eigenschaften im Eigenschaftenfenster fest.
(7) Wählen Sie unter „Beispiele“ die Option „SpinEdit“, fügen Sie das Steuerelement „SpinEdit“ zum Formular hinzu und passen Sie dessen Größe und Position entsprechend an. Legen Sie die entsprechenden Eigenschaften im Eigenschaftenfenster fest.
3. Code-Analyse:
(1) Um die Funktion der Hin- und Herbewegung des Balls zu realisieren, muss eine globale Variable festgelegt werden, nämlich die ganze Zahl I. Der Anfangswert von I ist 1. Wenn I=1, bewegt sich der Ball nach links, und wenn er die linke Wand des Panels trifft, wird der I-Wert zu 2. Zu diesem Zeitpunkt bewegt sich der Ball nach rechts, und wenn er die rechte Wand des Panels trifft , wird der I-Wert wieder 1. Auf diese Weise wird durch die Änderung des I-Wertes die Hin- und Herbewegung des Balls realisiert. Dieser Teil des Codes befindet sich im OnTimer-Ereignis:
procedure TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Legen Sie das Triggerzeitintervall des Timer-Steuerelements fest, wenn i=1, dann //Der Ball bewegt sich nach links, beginif shape1.left>0 thenbeginshape1 .left: =shape1.left-10; //Ändern Sie die Position des Balls shape1.Width:=(shape1.Width+1)mod 70; //Ändern Sie die Breite des Rechtecks, in dem sich die Kugel befindet. shape1.Height:=(shape1.Height+1)mod 70; //Ändern Sie die Höhe des Rechtecks, in dem sich die Kugel befindet. endelsei:=2; Ball zum rechten Ende;if i=2 thenbeginif shape1.left<(panel1.Width-shape1.Width-5) thenbeginshape1.left:=shape1.left+10; //Ändern Sie die Position des Balls shape1.Width:=(shape1.Width+1)mod 70;//Ändern Sie die Breite des Rechtecks, in dem sich der Ball befindet shape1.Height:=(shape1.Height+1)mod 70 ;/ /Ändern Sie die Höhe des Rechtecks, in dem sich der Ball befindetendelsei:=1;end;end;
(2) Die Schaltflächen „Start“ und „Stop“ steuern, ob sich der Ball bewegt. Tatsächlich steuern sie, ob der Timer funktioniert:
procedure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Setzen Sie das Auslöseintervall des Timer-Steuerelements Timer1.Enabled:=true; //Der Ball beginnt sich zu bewegenend;procedure TForm1.Button2Click(Sender : TObject);beginTimer1.Enabled:=False; //Der Ball stoppt, sich zu bewegenend;
(3) Die beiden Steuerelemente TrackBar und SpinEdit steuern die Geschwindigkeit der Ballbewegung. Die entsprechenden Codes lauten wie folgt:
procedure TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //Ändern Sie die Bewegungsgeschwindigkeitend;procedure TForm1.TrackBar1Change(Sender: TObject);beginspinEdit1.value:=trackbar1.Position; //Ändern Sie die Trackbar value Benachrichtigt das SpinEdit-Steuerelement über changesend;
4. Der vollständige Code von Delphi Flipper lautet wie folgt:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ExtCtrls, ComCtrls, StdCtrls, Spin;typeTForm1 = class(TForm)Panel1: TPanel;Button1: TButton;Button2: TButton;TrackBar1: TTrackBar;Timer1 : TTimer;Shape1: TShape;SpinEdit1: TSpinEdit;Button3: TButton;Prozedur Timer1Timer(Sender: TObject);Prozedur Button1Click(Sender: TObject);Prozedur Button2Click(Sender: TObject);Prozedur SpinEdit1Change(Sender: TObject);Prozedur TrackBar1Change(Sender: TObject); Prozedur Button3Click(Sender: TObject);private{ Private Deklarationen }public{ Öffentliche Deklarationen }end;varForm1: TForm1;i:integer;implementation{$R *.DFM}procedure TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Legen Sie das Auslösezeitintervall des Timer-Steuerelements fest, wenn i=1, dann //Der Ball bewegt sich nach links beginif shape1.left>0 thenbeginshape1.left:=shape1.left-10; //Ändern Sie die Position des Balls shape1.Width:=(shape1.Width+1)mod 70;//Ändern Sie die Breite des Rechtecks, in dem sich der Ball befindet shape1.Height := (shape1.Height+1)mod 70;//Ändern Sie die Höhe des Rechtecks, in dem sich der Ball befindet.endelsei:=2; //Der Ball bewegt sich zum rechten Ende;if i=2 thenbeginif shape1.left<(panel1.Width-shape1.Width-5) thenbeginshape1.left:=shape1.left+10; //Ändern Sie die Position des Balls shape1.Width:=(shape1.Width+1)mod 70; /Ändern Sie die Breite des Rechtecks, in dem sich der Ball befindet shape1.Height:=(shape1.Height+1)mod 70;//Ändern Sie die Höhe des Rechtecks, in dem sich der Ball befindet.endelsei:=1;end;end;procedure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Legen Sie das Auslösezeitintervall fest das Timer-Steuerelement Timer1 .Enabled:=true; //Der Ball beginnt sich zu bewegenend;procedure TForm1.Button2Click(Sender: TObject);beginTimer1.Enabled:=False; //Der Ball stoppt die Bewegungend;procedure TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //Ändern Sie die Bewegungsgeschwindigkeitend;procedure TForm1.TrackBar1Change(Sender: TObject);beginspinEdit1.value:=trackbar1.Position; //Das SpinEdit-Steuerelement über Änderungen in der Trackbar informieren. valueend;procedure TForm1.Button3Click(Sender: TObject);beginclose; //Exitend;initializationi:=1;end.