Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bewegung (https://www.delphipraxis.net/66628-bewegung.html)

s.h.a.r.k 5. Apr 2006 18:01

Re: Bewegung
 
Hey.

Der Code hier geht nicht:
Delphi-Quellcode:
inc(Object.Left);
Allgemein zu den Prozeduren (keine Funktionen!) inc und dec:
inc: steht für increment - zu deutsch: erhöhen

z.B.
Delphi-Quellcode:
var i: Integer;
i := 0;
inc(i); // hier wird i um 1 erhöht;
inc(i, 10) // hier wird i um 10 erhöht,
           // d.h. dass 10 ein optionaler
           // Paramter ist
dec: steht für decrement - zu detusch: erniedrigen oder auch verringern (nach ausdrücklichem Wunsch :wink: )

Hier gilt das selbe Beispiel wie oben genannt...

Khabarakh 5. Apr 2006 18:03

Re: Bewegung
 
Zitat:

Zitat von s.h.a.r.k
Allgemein zu den Methoden (keine Funktionen!)

"Methode" ist ja noch falscher ( :stupid: ) als "Funktion".

Nicodius 5. Apr 2006 18:03

Re: Bewegung
 
Zitat:

erniedrigen

ist wohl eine etwas ärgere auslegung :mrgreen: - ich würd verringern sagen ;)

inherited 5. Apr 2006 18:40

Re: Bewegung
 
ooouuups, jetzt wo dus sagst... stimmt
naja dann halt
Delphi-Quellcode:
Objekt.Left:=Objekt.Left+1;

Airblader 5. Apr 2006 20:00

Re: Bewegung
 
Zitat:

Zitat von Z32
Ist das so gemint ???

inc(Objekt.left) = heißt also ojekt 1 nach links
dec(objekt.left) = heißt also objekt 1 nach rechts

Nein.
Wird Objekt.Left erhöht, heißt das, dass es nach Rechts wandert.
"Left" gibt nämlich den Abstand zum linken Rand d. übergeordneten Controls (in diesem Fall wohl die Form) an ;)
Wird dieser größer wandert es logischerweise nach rechts.

air

Z32 7. Apr 2006 17:10

Re: Bewegung
 
Also erst mal vielen Dank für die Antworten, habe mir jetzt nen kleines Programm geschrieben wo ein Bild immer nach rechts fährt. Dann habe ich mir gedacht, lass das Bild doch einfach nach links fahren, wenn es rechts an den Rand stößt. Da habe ich jetzt ein Problem, das Bild rollt nach rechts und bleibt dort am Rand hängen.

Ich habe denn folgenden Code in einem On-Timer Ereignis.

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var f: integer;
begin
f:= 10 ;

if image1.left + f < form1.ClientWidth then
image1.left := image1.Left +f

else image1.Left := image1.Left -f;
end;
Weiß vielleicht einer was ich falsch gemacht habe ???

Ratte 7. Apr 2006 17:57

Re: Bewegung
 
Ist doch klar: du prüfst ob das Bild am Fensterrand ist. wenn es dass ist lässt du es in die gegenrichtung laufen. Dann ist es aber nichtmehr am fensterrand-->es läuft wieder in richtung Fensterrand. Du müsstest f global deklarieren und wenn es am Fensterrand ist einfach f:=-f; sagen. Dann ändert es die Richtung dauerhaft.

Z32 7. Apr 2006 18:06

Re: Bewegung
 
Zitat:

Zitat von Ratte
Ist doch klar: du prüfst ob das Bild am Fensterrand ist. wenn es dass ist lässt du es in die gegenrichtung laufen. Dann ist es aber nichtmehr am fensterrand-->es läuft wieder in richtung Fensterrand. Du müsstest f global deklarieren und wenn es am Fensterrand ist einfach f:=-f; sagen. Dann ändert es die Richtung dauerhaft.

Also das habe ich jetzt leider nicht verstanden, was ist falsch und muss geändert werden ???

xZise 7. Apr 2006 19:17

Re: Bewegung
 
Delphi-Quellcode:
private
  f : Integer;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  f := 10;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Image1.left + f > Form1.ClientWidth - Image1.Width then
    f := -10;
  else if Image1.left - f < 0 then
    f := 10

  image1.Left := image1.Left + f;
end;
Erklärung: Das Bild wandert 1x nach links! Dann ist es wieder weg von Rand und d.h. das Bild kommt wieder nach rechts

inherited 9. Apr 2006 09:56

Re: Bewegung
 
Sorry bin im verbesserungswahn
So ist es flexibler

Delphi-Quellcode:
private
  f : Integer;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  f := 10;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (Image1.left + f > ClientWidth - Image1.Width) or (Image1.left - f < 0) then f := -f;
  image1.Left := image1.Left + f;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz