Entwickler-Ecke
Multimedia / Grafik - Der Start-Screen
Delete - Fr 11.06.10 22:30
Titel: Der Start-Screen
Ich bin gerade dabei ein etwas größes Spiel für die Schule zu schreiben. Alles sehr einfach gehalten, aber es soll dennoch ein wenig KLasse besitzen. Das eigentliche Spiel ist auch schon fertig.
Doch nun möchte ich einen Start-Screen einbauen. Darum hab ich mir gedacht, mach ich einfach 2 Bilder, die sich abwechseln! Also einfach ins Formcreate eine Schleife!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| while (start = true) do begin sleep (2000); counter := counter + 1; if counter mod 2 = 1 then begin Img_menu_start.visible := true; Img_menu_clean.visible := false; end else begin Img_menu_start.visible := false; Img_menu_clean.visible := true; end; end; |
Und dann ins KeyPress die Abfrage!
Delphi-Quelltext
1: 2:
| if (start = true) and (key = 'VK_Return') then start := false; |
Aber es will einfach nicht funktionieren. Das Fenster zeigt sich gar nicht erst. Ich denke, weil das Formcreate nicht durchlaufen kann!
Jann1k - Sa 12.06.10 00:15
Sleep ist für sowas auch nicht geeignet, da es die Anwendung praktisch einfriert, nimm lieber einen Timer, den du dann bei Bedarf abschalten kannst.
MaPsTaR - Sa 12.06.10 01:30
Ich würde einen Timer im OnShow-Event der Form aktivieren, der die Bilder wechselt und dann deaktiviert wird, wenn Enter gedrückt wird.
Da könntest du dann eigentlich Timer1.Enabled testen und kannst die Variable start rausnehmen.
Soweit ich weiß, kann das nicht funktionieren...
Delphi-Quelltext
1: 2:
| if (start = true) and (key = 'VK_Return') then start := false; |
, da key vom Typ Char ist.
Schreib die Abbruchbedingung in OnKeyDown und...
Delphi-Quelltext
1: 2: 3: 4: 5:
| if (Timer1.Enabled) and (key = vk_Return) then begin Timer1.Enabled := false; end; |
Booleanvergleiche nicht auf true oder false!
Delete - Sa 12.06.10 12:04
MaPsTaR hat folgendes geschrieben : |
Ich würde einen Timer im OnShow-Event der Form aktivieren, der die Bilder wechselt und dann deaktiviert wird, wenn Enter gedrückt wird.
Da könntest du dann eigentlich Timer1.Enabled testen und kannst die Variable start rausnehmen.
Soweit ich weiß, kann das nicht funktionieren...
Delphi-Quelltext 1: 2:
| if (start = true) and (key = 'VK_Return') then start := false; | , da key vom Typ Char ist.
Schreib die Abbruchbedingung in OnKeyDown und...
Delphi-Quelltext 1: 2: 3: 4: 5:
| if (Timer1.Enabled) and (key = vk_Return) then begin Timer1.Enabled := false; end; |
Booleanvergleiche nicht auf true oder false! |
Ich hab mal deinen Rat befolgt, aber hab ich jetzt das Problem, dass sich das Fenster nicht zeit.
Es wird zwar als aktiv in der Taskleiste angezeigt, aber es erscheint nicht auf dem Bildschirm. Ich hab Probeweise nur die Schleife rausgenommen und festgestellt, dass es an der Schleife im OnShow liegt!
Aber möchte ich ja auch mein Spiel spielen und dafür muss ich es sehen.
ALF - Sa 12.06.10 12:41
Hi, mal ganz einfach.
Im Onshow - Event deiner Form, schreibst Du dies
Delphi-Quelltext
1:
| Timer1.Enabled := True; |
In Der Timer1 Procedure schreibst Du die Bilderwechsel rein.
Aber nicht als Schleife!
Und im OnKeyDown - Event Deiner Form kommt die genannte Abbruchbedingung rein.
Grundsetzlich muss man sich folgendes merken :!:
Es muss standart mässig, alles was in einer Procedure steht, die Procedure komplett durchlaufen werden, damit eine aktuallisierung passieren kann.
Eine sich wiederholende Schleife in einer Procedure verhindert dies! Demzufolge auch keine Aktuallisierung!
Gruss Alf
Delete - Sa 12.06.10 13:41
ALF hat folgendes geschrieben : |
Hi, mal ganz einfach.
Im Onshow - Event deiner Form, schreibst Du dies
Delphi-Quelltext 1:
| Timer1.Enabled := True; |
In Der Timer1 Procedure schreibst Du die Bilderwechsel rein.
Aber nicht als Schleife!
Und im OnKeyDown - Event Deiner Form kommt die genannte Abbruchbedingung rein.
Grundsetzlich muss man sich folgendes merken :!:
Es muss standart mässig, alles was in einer Procedure steht, die Procedure komplett durchlaufen werden, damit eine aktuallisierung passieren kann.
Eine sich wiederholende Schleife in einer Procedure verhindert dies! Demzufolge auch keine Aktuallisierung!
Gruss Alf |
Danke ... Hab jetzt alles auf die Reihe bekommen!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!