Entwickler-Ecke
Multimedia / Grafik - Image verschieben ohne Flackern
Xearox - So 21.03.10 07:25
Titel: Image verschieben ohne Flackern
Vorinformationen:
Ich bin z.Z. ein kleine Spiel am programmieren, welches aber noch lange nicht Fertig ist, im Anhang hab ich mal das Spiel hinzugefügt.
So nun hab ich ein Problem, beim verschieben der AIShips flackern alle bilder, und eine Option wie Buffering o.ä. hab ich nicht gefunden.
Um die Images auf die Form zu bringen, nutze ich Arrays und TImage
Code:
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:
| procedure Ship1Init; var AIShip1 : integer; PosY : integer; begin ButtonKlick:=true; PosY:=10; for AIShip1 := 0 to ShipProRunde -1 do begin Main.AIShip1Typ[AIShip1]:=TImage.Create(Form1); AIShip1Typ[AIShip1].Parent:= Form1; AIShip1Typ[AIShip1].picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'ship1.png'); AIShip1Typ[AIShip1].autosize:=true; AIShip1Typ[AIShip1].Visible:=true; AIShip1Typ[AIShip1].Top:=PosX; AIShip1Typ[AIShip1].Left:=PosY; AIShip1AttTyp[AIShip1]:=AIShip1Att; AIShip1DeffTyp[AIShip1]:=AIShip1Deff; AIShip1RangeTyp[AIShip1]:=AIShip1Range; ShipVisi:=false; PosY:=PosY+50; if (PosY>=600) then begin PosY:=0; end; end; end; |
und hier das bewegen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| for Ship1 := 0 to ShipProRunde -1 do begin AIShip1Typ[Ship1].Top:=AIShip1Typ[Ship1].Top+stepX; AIShip1Typ[Ship1].Left:=PosY; PosY:=PosY+50; if (PosY>=600) then begin PosY:=0; PosX:=PosX+1; end; end; |
wie ihr im Programm sehen könnt, flackern die Bilder richtig heftig, sobald man die Spiel Geschwindigkeit hoch dreht.
Aber wie kann ich das verhindern?
Stundenplan - So 21.03.10 09:13
Zitat: |
... eine Option wie Buffering o.ä. hab ich nicht gefunden. |
:arrow:
Form1.DoubleBuffered auf
true setzen!
Xearox - So 21.03.10 09:28
super, ich danke dir...
wieso steht das denn niergends, überall steht zwar was von Double Buffer, aber niergends, das man Form1. davor schreiben kann... :(
elundril - So 21.03.10 16:51
Das Form1. davor könntest du dir sparen wenn du DoubleBuffered := true; aus einer Methode von Form1 aufrufst. ;)
lg elundril
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!