Autor Beitrag
Kujo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mi 07.03.07 19:44 
Hi leute
Ich will, dass sich 10 bilder erst nach rechts bewegen und ab einem bestimmten punkt wieder umdrehen und sich nach links bewegen.
Die Rechtsbewegung habe ich aber wie geht es weiter?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
if image34.visible = true then image34.left:=image34.Left+1;
if image35.visible = true then image35.left:=image35.Left+1;
if image38.visible = true then image38.left:=image38.Left+1;
if image39.visible = true then image39.left:=image39.Left+1;
if image40.visible = true then image40.left:=image40.Left+1;
if image41.visible = true then image41.left:=image41.Left+1;
if image42.visible = true then image42.left:=image42.Left+1;
if image43.visible = true then image43.left:=image43.Left+1;
if image44.visible = true then image44.left:=image44.Left+1;
if image45.visible = true then image45.left:=image45.Left+1;
if image46.visible = true then image46.left:=image46.Left+1;
if image47.visible = true then image47.left:=image47.Left+1;
if image48.visible = true then image48.left:=image48.Left+1;


Zuletzt bearbeitet von Kujo am Mi 07.03.07 19:50, insgesamt 1-mal bearbeitet
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 07.03.07 19:49 
:welcome: in der Entwickler-Ecke auch dir!
Eine Bewegung in die andere Richtung bekommst du, in dem du die Geschwindigkeit negativ machst, etwa so:
ausblenden Delphi-Quelltext
1:
image34.left:=image34.Left-1;					


PS: Die Delphi-Tags unseres Forums, über die dein Quelltext schön formatiert wie in Delphi selbst aussieht, funktionieren so: <span class="inlineSyntax"><span class="codecomment">{PROTECTTAGe5dde9cb16212532dfe10201830a1686}</span></span>
Ist ne klasse Funktion und jeder liebt sie ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Mi 07.03.07 19:51 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var i: integer; img: TImage;
for i := 34 to 48 do
begin
  img :=  TImage(FindComponent('image' + inttostr(i)));
  if (img.left < myposition) then  //myposition ist dein bestimmter Punkt
    img.left := img.left + 1;
  else
    img.left := img.left - 1;
end;

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Kujo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mi 07.03.07 19:53 
cool danke ich probier das gleich mal


Zuletzt bearbeitet von Kujo am Mi 07.03.07 19:54, insgesamt 1-mal bearbeitet
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Mi 07.03.07 19:54 
Hallo,

du kannst einfach abfragen ob die Rechte Seite des images einen bestimmten Punkt überschritten hat.

ausblenden Delphi-Quelltext
1:
if Image34.left + Image34.width >= 400 then ...					


Da wird also abgefragt ob die RECHTE Seite des Images >= als 400 ist, sobald das eintritt musst du einfach nur den Bewegungsvektor ändern.

ausblenden Delphi-Quelltext
1:
if Image34.left + Image34.width >= 400 then dx := -dx					

Hier wird dx einfach negativ gemacht.

Deinen Code zur Bewegung musst du dann natürlich an dx anpassen.

@Marco D. : So springt das Image immer von einem Punkt zum anderen, da ja nur solange nach rechtsverschoben wird wie img.left < als eine bestimmte position ist, dann wird wieder abgezogen, damit ist img.left wieder kleiner und es wird wieder in die andere Richtung geschoben.
Kujo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mi 07.03.07 20:05 
Also ich hab es so probiert
ausblenden 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:
procedure TForm1.Timer3Timer(Sender: TObject);
var x: integer; img: TImage;
begin

image1.Visible:=true;
image38.Visible:=true;
image35.Visible:=true;
image34.Visible:=true;
image39.Visible:=true;
image40.Visible:=true;
image41.Visible:=true;
image42.Visible:=true;
image43.Visible:=true;
image44.Visible:=true;
image45.Visible:=true;
image46.Visible:=true;
image47.Visible:=true;
image48.Visible:=true;

for x := 34 to 48 do
begin
  img :=  TImage(FindComponent('image' + inttostr(x)));
  if (img.left < 600then
    img.left := img.left + 1
  else
    img.left := img.left - 10;
end;
end;


Das problem ist, dass es sich nur kurz mit img.left - 10 zurückbewegt und dann wieder nach rechts. Es macht also sofort wieder eine rechtsbewegung und läuft nich wieder bis nach links zurück. Was kann man da jetzt machen?
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Mi 07.03.07 21:22 
Wie oben schon geschrieben musst du für jedes Bild nen Geschwindigkeitsvektor haben. Den machst du negativ wenn das bild nach links soll und positiv wenn das Bild nach rechts soll.

ausblenden volle Höhe 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:
Var  dx: Array[34..48of Integer;  // Globale Variable

procedure TForm1.Timer3Timer(Sender: TObject);
var x: integer; img: TImage;
begin

image1.Visible:=true;
image38.Visible:=true;
image35.Visible:=true;
image34.Visible:=true;
image39.Visible:=true;
image40.Visible:=true;
image41.Visible:=true;
image42.Visible:=true;
image43.Visible:=true;
image44.Visible:=true;
image45.Visible:=true;
image46.Visible:=true;
image47.Visible:=true;
image48.Visible:=true;

for x := 34 to 48 do
begin
  img :=  TImage(FindComponent('image' + inttostr(x)));
  if (img.left < 600then
    dx[x] := 5;

  if (img.left <= 0 then
    dx[x] := -5;

  img.left := img.left + dx[x];
end;
end;
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 07.03.07 22:23 
user profile iconKujo hat folgendes geschrieben:
Was kann man da jetzt machen?

Das else weglassen und statt dessen eine neue Abfrage machen. Sobald einmal 10 abgezogen wurden von dem left ist dieses schon nicht mehr <600 und die Abfrage geht in den Else-Teil. Richtig wäre:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var speed: integer;
begin
   if image1.left > 600 then
        speed := -5;

   if image1.left < 50 then
        speed := 5;

   image1.left := image1.left + speed;
end;

wobei du speed als array definieren solltest und für jedes Image eine eigene Speed-Variable (Entspricht dem von Dragonclaw angesprochenen Geschwindigkeitsvektor) benutzen.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.