Ja, hab es jetzt so gemacht, dass immer der Hintergrund verschoben wird. Jetzt is nur folgendes Problem aufgetreten:
Ich hab ja 4 Bilder vom Auto (je eins für oben, unten, rechts und links). Das "rumfahren" klappt auch wunderbar, nur bewegen sich die anderen 3 Bilder bei den Richtungen links und rechts nicht richtig mit. Eigentlich müssten die immer alle an der selben Stelle sein, jedoch entfernt sich links und rechts immer ein wenig von den anderen Bildern. Hab die Bewegung mit OnKeyDown und 4 Timern (einen für jede Richtung) gemacht. Quelltext sieht folgendermaßen aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90:
| procedure TAutorennen.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var iTimer, iAuto: Integer; begin if key = vk_right then begin for iAuto := 1 to 4 do begin Auto[iAuto].Visible := False; end; for iTimer := 1 to 4 do begin Timer[iTimer].Enabled := False; end; Auto[2].Visible := True; Timer[2].Enabled := True; end
else if key = vk_up then begin for iAuto := 2 to 4 do begin Auto[iAuto].Visible := False; end; for iTimer := 2 to 4 do begin Timer[iTimer].Enabled := False; end; Auto[1].Visible := True; Timer[1].Enabled := True; end
else if key = vk_space then begin for iTimer := 1 to 4 do begin Timer[iTimer].Enabled := False; end; end
else if key = vk_down then begin for iAuto := 1 to 4 do begin Auto[iAuto].Visible := False; end; for iTimer := 1 to 4 do begin Timer[iTimer].Enabled := False; end; Auto[3].Visible := True; Timer[3].Enabled := True; end
else if key = vk_left then begin for iAuto := 1 to 3 do begin Auto[iAuto].Visible := False; end; for iTimer := 1 to 3 do begin Timer[iTimer].Enabled := False; Auto[4].Visible := True; Timer[4].Enabled := True; end;
end; end;
procedure TAutorennen.Timer_HochTimer(Sender: TObject); var iStrecke: Integer; begin for iStrecke := 1 to 18 do begin Strecke[iStrecke].top := Strecke[iStrecke].top + 10; end; end;
procedure TAutorennen.Timer_RechtsTimer(Sender: TObject); var iStrecke: Integer; begin for iStrecke := 1 to 18 do begin Strecke[iStrecke].left := Strecke[iStrecke].left - 10; end; end;
procedure TAutorennen.Timer_LinksTimer(Sender: TObject); var iStrecke: integer; begin for iStrecke := 1 to 18 do begin Strecke[iStrecke].left := Strecke[iStrecke].left + 10; end; end;
procedure TAutorennen.Timer_RunterTimer(Sender: TObject); var iStrecke: Integer; begin for iStrecke := 1 to 18 do begin Strecke[iStrecke].top := Strecke[iStrecke].top - 10; end; end; |
Falls jemand findet, an was es liegen könnte, bitte sagen, ich hab nämlich nichts gefunden.
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt