Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - images abfangen
Delphi-Zone - Fr 24.09.10 20:36
Titel: images abfangen
So,
Wie kriege ich es hin das wenn ein images fällt, nicht über mein bildschirm rand fällt, und nicht mehr zu sehen ist.
Also das ein anderes images es aufhält.
Danke im Vorraus!
gruß tom
mkinzler - Fr 24.09.10 20:43
Wie meinst du das?
Delphi-Zone - Fr 24.09.10 20:48
Also...
Ich hab ein image, das ist ein mensch.
und wenn du taste oben ückst, denn springt er hoch.
und denn lass ich ihn mit dem TTimer wieder runterfallen,
aber er stoppt nicht. er fällt bis unter den bildschirmrand, obwohl er er auf dem boden stoppen soll.
Wie verhinder ich das?
mkinzler - Fr 24.09.10 20:50
Im Timer die Position mit der des Bodens abgleichen
Delphi-Zone - Fr 24.09.10 20:56
Wie genau mach ich das?
Ich bin relativ neu beim programmieren.
Wäre cool wenn ihr mir das genauer erklärt.
Gruß tom!
mkinzler - Fr 24.09.10 20:58
Na dein Image hat ja eine Postion (Left = Linker Rand; Top = Oberer Rand).
Du musst also überprüfen ob der untere Rand tiefer als der obere Rand des Bodens ist (Unter Rand = oberer Rand + Höhe)
Delphi-Zone - Fr 24.09.10 21:06
Sry, irgendwie versteh ich das nicht, mit der höhe und so ja, ist ja left und top und -1 und +1 und so.
Aber wie man das andere macht.
Am besten wären befehle.
danke
mkinzler - Fr 24.09.10 21:13
Die Figur soll ja stoppen, wenn die Füpsse den Boden berühren und nicht der Kopf. Deshalb musdst du zu Top die Höhe hinzuzählen um den unteren Rand des Images zu ermitteln.
Und zu den Befehlen: Ist ja ein einfacher Vergleich
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| if <Boden>.Top > <Figur>.Top + <Figur>.Height then begin <Figur>.Top := <Figur>.Top + <DeltaY>; ... end else <Figur>.Top := <Boden>.Top - <Figur>.Height; ... end; |
Delphi-Zone - Fr 24.09.10 21:32
So, ich hab jetzt das geschrieben und es geht immer noch nicht...
Delphi-Quelltext
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:
| unit feld1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, jpeg;
type TForm1 = class(TForm) Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; Image7: TImage; Image8: TImage; Timer1: TTimer; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm} procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_LEFT: begin Image7.Left := Image7.Left - 5; image8.left := image7.Left - 5; image7.Visible := false; image8.Visible := true; Key := 0; end; VK_RIGHT: begin Image7.Left := Image7.Left + 5; image8.left := image7.Left + 5; image7.Visible := true; image8.Visible := false; Key := 0; end; VK_UP: begin Image7.Top := image7.Top - 50; Image8.Top := image8.Top - 50; end; end; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Image7.Top := image7.Top + 10; Image8.Top := image8.Top + 10; if image2.Top > image8.Top + image8.Height then begin image8.Top := image8.Top + 520Y; ... end else image8.Top := image2.Top - image9.Height; ... end; end;
end. |
Moderiert von
Martok: Delphi-Tags gesetzt
Delphi-Zone - Fr 24.09.10 21:51
oh man :( ich krieg das einfach nicht hin
mkinzler - Fr 24.09.10 21:55
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Timer1Timer(Sender: TObject); begin if image2.Top > image8.Top + image8.Height then begin image8.Top := image8.Top + 10; end else begin image8.Top := image2.Top - image8.Height; end; end; |
Delete - Fr 24.09.10 21:56
Delphi-Zone hat folgendes geschrieben : |
So, ich hab jetzt das geschrieben und es geht immer noch nicht... |
WAS geht nicht? Wir sind keine Hellseher. :roll:
Delphi-Zone - Fr 24.09.10 23:55
ja, ich werde mir das nochmal durch lesen.
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!