Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Es wir nur ein Bild angezeigt, :( sollen aber mehr


Xearox - Di 16.03.10 18:55
Titel: Es wir nur ein Bild angezeigt, :( sollen aber mehr
Und ich weiß einfach nicht, was ich noch machen soll


Delphi-Quelltext
1:
2:
type
  Ship1ArrayType = Array [1..200of TImage;



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.VariableInit;//Hier werden die Variablen initialisiert
begin
  Count:=0;
  stepX:=10;
  stepY:=10;
  Countdown:=5;  //Spielgeschwindigkeit
//Form Größe Anpassen
  FBreite:=1024;
  FHoehe:=768;
//Form Position Anpassen
  Form1.Top:=50;
  Form1.Left:=50;
//Ränder für Collisions Abfrage
  RandR:=950;
  RandU:=600;
  PosX:=0;
  PosY:=0;
//Schiff Anzahl
  ShipProRunde:=3;
end;



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Ship1Init;
var
  Ship1 : integer;

begin
  PosY:=10;
  for Ship1 := 1  to ShipProRunde -1 do
  begin
    Ship1Typ[Ship1]:=TImage.Create(nil);
    Ship1Typ[Ship1].Parent:= self;
    Ship1Typ[Ship1].picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Ship1.png');
    Ship1Typ[Ship1].Left:=PosY;
    Ship1Typ[Ship1].autosize:=true;
    Ship1Typ[Ship1].Top:=PosX;
    Ship1Typ[Ship1].Left:=PosY;
    Ship1Typ[Ship1].Visible:=true;
    PosY:=PosY+60;
  end;
end;



Mache ich da irgendwas Falsch?
Es sollen eine Bestimme Anzahl an Bildern auf der Form angezeigt werden, jedoch wird nur ein einziges Angezeigt.
Das mit dem "Ship1Typ[Ship1]:=TImage.Create(nil);" habe ich von http://www.swissdelphicenter.ch/de/forum/index.php?topic=12168.0

Kann mir jemand weiter helfen?
Achso, bevor ich das vergesse, nach einem Bild, soll das nächste 70px nach rechtes verschoben werden, daher habe ich das auch oben so eingestellt.

[Edit]: Ich habe es geschafft, das sich lediglich ein bild bewegen kann, habe die Exe mal eingefügt.
Das mit dem Panel Lasse ich mal weg, sieht irgendwie so besser aus :D
So, nun hab ich das Problem, das es aber mehrere Bilder Bewegen sollen, jedoch wird nur ein einziges angezeigt...


Xentar - Di 16.03.10 18:59

Hast du schonmal ein paar Haltepunkte gesetzt (F5) ob der da überhaupt durchläuft?


Xearox - Di 16.03.10 19:23

ja habe ich, alles läuft einmal durch, angezeigt wird jedoch nur ...ähm...ja...eigentlich soll alles im in einem Panel angezeigt werden...
muss ich da noch irgendwas hinzufügen?

*mist*e ey, auf der Form selber wird ein einziges bild angezeigt, sobald ich das panel deaktiviere... :(


Verdammte Hacke EY...Ich arbeite Nächte durch, damit sich diese Scheiß Bilder auch bewegen können, jedoch lag alles daran, das die Bilder nicht im Panel angezeigt werden, und ich vorher ein Image auf dem Panel Platziert habe...
Und somit vom Panel verdeckt wurden

man man man


platzwart - Di 16.03.10 19:29

Warum ist PosY einmal eine lokale und einmal eine globale Variable? Und warum benennst du die X-Position (Left) eigentlich PosY und umgekehrt?!?


Xearox - Di 16.03.10 19:44

habs verwechselt und das mit zwei mal deklaieren, habe ich bei mir schon geändert...


Ähm...kann mir wer helfen, irgendwie ist im Code ein Fehler, oben mal downloaden.

Durch eine kleinere Spielerei hab ich gerade festgestellt, das es doch Mehrere Bilder sind

Unten hab ich mal die Spielerei Dargestellt, sobald man den Stoppknopf drückt, stellt ihr fest, das es tatsächlich mehrere Bilder sind, was ich jedoch nicht verstehe, wieso diese nur dadurch angezeigt werden, und am anfang überlappen


Niko S. - Di 16.03.10 20:59

Ich weiß jetzt nicht ob ich das überlesen habe, oder ob es noch nicht genannt wurde.
Bei Bildern, bzw Images, musst du ein Parent angeben..
Dann sollten sie auch erscheinen.

Delphi-Quelltext
1:
Image1.Parent := Form1;                    


Xearox - Di 16.03.10 21:06

habs drin, wurde in einem anderem Thread genannt


SvenAbeln - Mi 17.03.10 01:56

Ich hab mir mal deinen Quelltext angesehen.
  1. In Ship1Init erzeugst du deine Images und verschiebst sie jeweils immer um 60 Pixel nach Rechts.
  2. In ObjekteInit verschiebst du wieder alle Bilder. Diesmal alle auf die selbe Position, deswegen liegen die übereinander.


Xearox - Mi 17.03.10 04:41

das mir das nicht aufgefallen ist, danke :=D