AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bilder / Objekte in Delphi bewegen
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder / Objekte in Delphi bewegen

Offene Frage von "sirblack"
Ein Thema von sirblack · begonnen am 27. Okt 2005 · letzter Beitrag vom 17. Nov 2005
Antwort Antwort
sirblack

Registriert seit: 27. Okt 2005
3 Beiträge
 
#1

Bilder / Objekte in Delphi bewegen

  Alt 27. Okt 2005, 13:06
Hallo, ich habe mich jetzt seit einiger Zeit mit Delphi beschäftigt. Habe jetzt vor ein Spaceshooter Spiel zu programmieren. Bin jetzt aber an nem Problem angekommen wo ich mir nicht mehr zu helfen weiß. Da TTimer zu langsam war, wollte ich TDXTimer verwenden. Aber der funktioniert nicht, da ich ihn nach dem erstellen erst deaktiviern muss und ihn dann aktivieren muss. Dadurch wird beim erstellen eines zweiten Timers der erste deaktiviert.
Wie kann ich das Problem umgehen?

Hier der Quelltext

Delphi-Quellcode:
unit Schuss;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Figur, Forms,Graphics,
  Dialogs, ExtCtrls,DXClass;

type
  TSchuss = class(TImage)
  private
  ZTimer : TDXTimer;
  ZForm: TForm;
  ZSchuss: TIMage;
  procedure bewegen(Sender: TObject; LagCount: Integer);
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
        constructor erstelle(X,Y :integer; Formular: TForm);
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
  end;



procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TSchuss]);
end;

constructor TSchuss.erstelle(X,Y : integer; Formular: TForm);
begin
 ZForm:=Formular;
 ZSchuss := TImage.create(ZForm);
 ZSchuss.parent := ZForm;
 ZSchuss.picture.loadfromfile('schuss.bmp');
 ZSchuss.setbounds
               (X,Y,5,7);
 ZSchuss.Transparent := false;
 ZSchuss.Stretch := true;

 ZTimer := TDXTimer.create(ZForm);
 ZTimer.Interval := 10;
 ZTimer.ActiveOnly :=true;
 Ztimer.Enabled := false;
 ZTimer.Enabled := true;
 ZTimer.OnTimer := bewegen;


end;

procedure TSchuss.bewegen(Sender: TObject; LagCount: Integer);
begin

 ZSchuss.Top := ZSchuss.Top - 20;
 //if ZSchuss.Top <= 0
 //then Zschuss.Destroy;
end;

end.
Was ich nicht weiß, kann man mich auch nicht abfragen.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Bilder / Objekte in Delphi bewegen

  Alt 27. Okt 2005, 13:13
TTimer zu langsam? hast du auch das Intervall runter gesetzt?
Martin Weber
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Bilder / Objekte in Delphi bewegen

  Alt 27. Okt 2005, 13:24
Herzlich Willkommen in der DP !

Dein Ansatz hat zwei Fehler:
  • Du verwendest für jedes Objekt einen eigenen Timer. Nimm besser einen globalen Timer für alle Objekte, damit hast du gleichzeitig dein Problem mit mehreren Timern gelöst.
  • Du verwendest für jedes Objekt ein eigenes Image. Auch das solltest du global mit einem Image, das das ganze Spielfeld beinhaltet, lösen. Images sind einfach nicht zum Bewegen gedacht. Hier im Forum suchenOffScreenBitmap
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Bilder / Objekte in Delphi bewegen

  Alt 28. Okt 2005, 18:41
Hallo,

ich habe schon einige male versucht ein Spielchen mit einen Image zu programmieren.
Das Problem das Image blinkt beim bewegen!

Robin
Robin W.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Bilder / Objekte in Delphi bewegen

  Alt 28. Okt 2005, 18:45
Schau mal einen Post über deinen
Zitat:
Images sind einfach nicht zum Bewegen gedacht.
Zitat:
Auch das solltest du global mit einem Image, das das ganze Spielfeld beinhaltet, lösen.
Zitat von Khabarakh:
Damit wirst nie wieder irgendetwas flimmern sehen.
(evt. noch DoubleBuffered = true. Das ist aber kein echter Ersatz für oben Genanntes)
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
sirblack

Registriert seit: 27. Okt 2005
3 Beiträge
 
#6

Re: Bilder / Objekte in Delphi bewegen

  Alt 3. Nov 2005, 12:48
Ok, wie mach ich das genau mit diesem OffScreenBitmap??? Kenn mich nich so sehr aus...
Was ich nicht weiß, kann man mich auch nicht abfragen.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Bilder / Objekte in Delphi bewegen

  Alt 3. Nov 2005, 14:08
Off|screen|bit|map, das,
1. konkret: ->Bitmap, das nicht angezeigt wird.
2. als Technik in der Programmierung: auf ein Offscreenbitmap (->1.) wird die komplette darzustellende ->Szene gezeichnet und das Bitmap dann auf ein darstellendes ->Control übertragen. Gegenüber dem direkten ->Zeichnen auf die ->Leinwand eines ->Formulars hat diese technik den Vorteil, das kaum Flimmern auftritt und die komplette Szene gleichzeitig gezeichnet wird.

Hoffe das reicht.

In Deutsch: Du zeichnest alles in ein TBitMap und weist dieses dann einem TImage zu.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Bilder / Objekte in Delphi bewegen

  Alt 3. Nov 2005, 15:04
Begründung:
Weil der RAM um einiges schneller als die Festplatte ist
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#9

Re: Bilder / Objekte in Delphi bewegen

  Alt 3. Nov 2005, 15:11
Und ein Beispielcode:
http://luckie-online.de/Developer/De...eenBitmap.html
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
sirblack

Registriert seit: 27. Okt 2005
3 Beiträge
 
#10

Re: Bilder / Objekte in Delphi bewegen

  Alt 17. Nov 2005, 12:50
So weit ganz ok, hab das zwar jetzt noch nicht mit Offscreenbitmap, habe aber einen Globalen timer der alles bewegt. Die erstellten Objekte werden in einer Liste eingetragen und dann bewegt. Nun ist meine nächste Frage wie kann ich möglichst einfach eine Kollision abfragen? Erstell ich dazu ein Arry das die Koordinaten der einzelnen Bitmaps aufnimmt? Kann ich dann nich überprüfen lassen ob diese Bitmaps übereinander liegen und dann diese jeweils aus den Listen löschen lassen?
Was ich nicht weiß, kann man mich auch nicht abfragen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz