Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timer Event (https://www.delphipraxis.net/139882-timer-event.html)

Kaj 7. Sep 2009 15:43


Timer Event
 
huhu,

also mit den Timern häng ich ziemlich zurück :o
Bzw. weiß ich beinahe nichts über diese -.-

Leider hab ich über Suche kein wirklich tolles Tutorial gefunden was mit mal ein Timer erklärt.

Jetzt nur mal kurz meine Frage, denn ich brauch ein Event, dass von einem Timer immer wieder nach einer bestimmten Zeit gestartet wird.

Weiter als: Timer1.Enabled := True; bin ich nur leider noch nicht -.-"


Danke im vorraus :)

DeddyH 7. Sep 2009 15:44

Re: Timer Event
 
Du gibst ein Timer-Intervall in Millisekunden an, nach dessen Ablauf der Code des Timer-Events ausgeführt wird. Dies geschieht so lange zyklisch, solange der Timer Enabled ist.

Kaj 7. Sep 2009 16:00

Re: Timer Event
 
Das Event kommt dann unter OnTimer?

DeddyH 7. Sep 2009 16:02

Re: Timer Event
 
Genau.

Kaj 7. Sep 2009 16:40

Re: Timer Event
 
ich pack das jetzt mal einfach hier dazu, und zwar bildet sich jetzt folgendes Problem:

Über den Timer wird jetzt mein Event ausgeführt, somit so alles okay, allerdings soll bei dem Timer event ein Wert um einen zweiten Wert verringert werden und zu gleich in einem Gauge als Prozent gezeigt werden.

Problem ist, dass meist schon 0% sind, wenn der Wert noch bei 400 ist.

Das sieht bei mir so aus:

Delphi-Quellcode:
procedure TForm1.Angriff;
Var Min, Max, verursacht, Schaden : Integer;
    TotalWert, PlayerHP, HPWert, ProzentWert : Real;
begin
  Min := Enemys[i].MinDmg;
  Max := Enemys[i].MaxDmg;
  Schaden := Zufallszahl(Min, Max);
  PlayerHP := Player[n].HP;
  HPWert := (PlayerHP / 100);                       //
  TotalWert := (Schaden / HPWert);                  // Errechnung der Prozente
  verursacht := trunc(TotalWert);                   //
  Gauge2.Progress := Gauge2.Progress - verursacht;  // Aktualisierung der HP Bar

  Player[n].HP := Player[n].HP - Schaden;
  Label3.Caption := IntToStr(Player[n].HP);
  Meldung;
end;
Mit round, sowie mit trunc kommt das gleiche ergebnis, somit ist es kein Rundungsfehler :S

taaktaak 7. Sep 2009 17:23

Re: Timer Event
 
Im Timer reduzierst du bei jedem Aufruf den Wert von "Gauge2.Progress" um den Wert von "Verursacht" - Wo/wann wird der Wert "Gauge2.Progress" aber initialisiert bzw. wieder "gefüllt"? Je nach Grenzwerten Min/Max in Relation zum Wert von "Gauge2.Progress" und Aufrufhäufigkeit wird "Gauge2.Progress" so schnell auf 0 reduziert.

PS: Plural von Enemy ist Enemies

Kaj 7. Sep 2009 19:25

Re: Timer Event
 
Gauge2.Progress wird zu beginn auf 100 gesetzt


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 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