Autor Beitrag
Saarpoint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: Di 19.10.04 21:24 
Hi!

Ich bräuchte mal eure Hilfe!

Bei meinem Spiel soll eine Hi-Score Liste (Frame-Objekt) ins
Spielfeld fliegen. Variable I soll alle 0,5 Sekunden verringert werden,
damit hierdurch eine Animation entsteht. Was muss ich da hinter das "do"
schreiben um die Timer-Procedure richtig aufzurufen?

Was mir auch Sorgen bereitet, ist dass die HiScore-Listen-Animation im Hintergrund
abläuft, während noch Form2 (Eingabemaske der Spielernamen) angezeigt wird.
Die Spielernamen sollen auf der HiScore-Liste auch angezeigt werden, aber die
Timer-Procedure ist schneller. Ich hab es zwar mit ShowModal versucht, aber da erhalte
ich einen Fehlermeldung: "Aus einem Sichbarem Fenster kann kein Modales gemacht werden"
Hää? Sichtbar? Ich zeiger es doch mit Show erst an...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
...  
Form2.Show;  { Spielstart-Optionen anzeigen }
ScoreTableShow.Enabled := true;

for i := 660 downto 440 do   <-  ?????????

end;

procedure TMainForm.ScoreTableShowTimer(Sender: TObject);
var I: Integer;
begin
  ScoreTable.Left := I;
end;



Gruß, Andy

_________________
Standart := false; Standard := true;
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Di 19.10.04 21:38 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Frame1.Left := -Frame1.Width;
for i := 0 to Frame1.Width do 
begin
  Frame1.Left := Frame1.Left + 1;
  Application.ProcessMessages;
end;


Frame1 = dein Highscore-Frame.... ungetestet, sollte so funzen...


Wegen deinem "Show"-Problem: hast praktisch da den Aufruf "Form2.Show" durch "From2.ShowModal" ersetzt? das sollte eigentlich glaub funzen...



MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Saarpoint Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: Di 19.10.04 22:30 
das mit Form2.ShowModal hab ich ja versucht. Und genau da kommt der Fehler.

mit dem source-code kann ich jetzt so auf anhieb nichts anfangen. ich will die variable "I"
an die Timer Procedure übergeben (das var I: integer muss natürlich weg). daher meine
frage: wie rufe ich die timer procedure hinter dem "do" auf. was muss ich dort genau hinschreiben?

andy

_________________
Standart := false; Standard := true;
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mi 20.10.04 10:01 
Das klappt so nich, wie du das willst... weil du die parameter der Timer-Procedure nicht ändern kannst. Was du aber machen kannst wär sowas:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
for i := 660 downto 440 do   <-  ?????????  
  MoveScoreTable(i);




procedure TMainForm.MoveScoreTable(i: integer);
begin
  ScoreTable.Left := I;  
end; 

procedure TMainForm.ScoreTableShowTimer(Sender: TObject);  
begin  
  MoveScoreTable(0);    // da weiß ich net, was du machen willst... das würde die ScoreTable jetzt ganz links positionieren...
end;



MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Benutzername
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 210

Win XP Pro
Delphi 7 PE, D2005 Prof. SSL
BeitragVerfasst: Mi 20.10.04 12:48 
Ist das nicht ein wenig das falsche Forum?
Saarpoint Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: Mi 20.10.04 22:06 
Hab das Problem gelöst, in dem ich es nicht über den Timer, sondern
über die im DF gepostete Delay-Funktion mache.

Im Grunde ganz einfach:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure Delay(t: DWord);
var
  Tick:DWord;
begin
  Tick:=GetTickCount;
  repeat
    Application.ProcessMessages;
  until ((GetTickCount - Tick) > t);
end;

for I := 660 downto 440 do 
 begin
  ScoreTable.Left := I;
  delay(2);
 end;


Trotzdem Danke für deine Mühe! :D
Jetzt muss ich nur noch herausfinden, warum ich die Form2 nicht mit
Form2.ShowModal anzeigen lassen kann, weil Form2 angeblich sichtbar wäre...???

Andy

_________________
Standart := false; Standard := true;