![]() |
[DelphiX]Da sollte sich doch was bewegen ...
Delphi-Quellcode:
Das ist der original Code aus einem Tutorial welches ich gerade Online nich finde :angle:
procedure TForm1.DXTimer1Timer(Sender: TObject);
begin if not DXDraw1.CanDraw then Exit; {dürfte bekannt} x:=x+vx; {Bewegung um vx in die X-Richtung} y:=y+vy; {Bewegung um vy in die Y-Richtung} if x<=0 then vx:=vx * - 1; {wenn das Bild am linken Rand ist, soll es sich in die Gegenrichtung bewegen} if x>=dxdraw1.width - dximagelist1.Items[0].width then vx:=vx * - 1; {wenn das Bild am rechten Rand ist, soll es sich in die Gegenrichtung bewegen} if y<=0 then vy:=vy * - 1; {wenn das Bild oben ist, soll es sich in die Gegenrichtung bewegen} if y>=dxdraw1.height - dximagelist1.Items[0].height then vy:=vy * - 1; {wenn das Bild unten ist, soll es sich in die Gegenrichtung bewegen} dximagelist1.Items[0].draw(DXDraw1.Surface, x,y, 0); {dürfte bekannt} DXDraw1.Flip; {dürfte bekannt} end; Wenn ich allerdings mein Projekt starte erscheint nur das schwarze DirectX Fenster, ohne das bewegende Bild. Könnte mir vielleicht jemand sagen was daran Falsch ist? [Anmerkung] Ich benutze Delphi6 & DelphiX -- edit: *schäm* ich seh gerade das es hier ja auch ein Multimedia Forum gibt ... vielleicht wäre ein Mod ja mal so nett und könnte diesen Thread dahin verschieben ... :angle: |
Re: [DelphiX]Da sollte sich doch was bewegen ...
irgendwie glaube ich das der fehler hier bei der Prozedur liegt:
procedure TForm1.DXTimer1Timer(Sender: TObject); *nach einer lösung such* |
Re: [DelphiX]Da sollte sich doch was bewegen ...
Hi,
das Problem hatte heute schon mal jemand, siehe: ![]() er hatte vergessen, die DXImageList mit DXDraw zu verbinden... ist das vielleicht auch dein Problem..? "Bei der DXImageList1 muß in der Eigenschaft DXDraw die entsprechende Komponente (also DXDraw1) eingetragen werden... " Ich hab das gleiche Tut letzte Woche ausprobiert, lief ohne Probleme... :P |
Re: [DelphiX]Da sollte sich doch was bewegen ...
Daran dachte ich auch, als ich schon zuvor den Foren Thread gelesen hatte. Aber daran lag es wirklich nicht ...
ich poste einfach nochmal den ganzen Code ... vielleicht findet ja jemand den fehler :roll:
Delphi-Quellcode:
Übrigens, hier das tut:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DXClass, DXDraws, StdCtrls; type TForm1 = class(TForm) DXDraw1: TDXDraw; DXImageList1: TDXImageList; DXTimer1: TDXTimer; procedure DXTimer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; x: integer=0; y: integer=0; vx: integer=1; vy: integer=1; implementation {$R *.dfm} procedure TForm1.DXTimer1Timer(Sender: TObject); begin if not DXDraw1.CanDraw then Exit; x := x + vx; y := y + vy; if x <= 0 then vx := vx * - 1; if x >= dxdraw1.width - dximagelist1.Items[0].width then vx := vx * - 1; if y <= 0 then vy := vy * - 1; if y >= dxdraw1.height - dximagelist1.Items[0].height then vy := vy * - 1; DXImageList1.Items[0].Draw(DXDraw1.Surface, x, y, 0); DXDraw1.Flip; end; end. ![]() Liegt es vielleicht auch daran, das ich Delphi6 benutze, die Komponente aber eigentlich für Delphi7 ist? Es kam kein Fehler beim installieren ... |
Re: [DelphiX]Da sollte sich doch was bewegen ...
Ich habe jetzt mal das dritte Tutorial gemacht (auch von der Seite ...)
Aber auch wieder nur schwarzes Bild. |
Re: [DelphiX]Da sollte sich doch was bewegen ...
Hi,
hab deinen Code übernommen und er funktioniert so wirklich nicht. :gruebel: Mir ist dann aufgefallen, daß bei der Funktion TForm1.DXTimer1Timer bei dir der Parameter LagCount (siehe Tutorial) fehlt... hast Du die Funktion per Hand reincodiert :?: Normalerweise wird der Rumpf der Prozedur von Delphi generiert, wenn man die entsprechende Eigenschaft (OnTimer) der Timer-Komponente anklickt. Dann stimmen auch die Parameter, wenn Du die Prozedur von Hand reinschreibst, dann fehlt außerdem in der dfm-Datei fürs Form die entsprechende Zuordnung
Delphi-Quellcode:
und die TimerProzedur wird nie aufgerufen.
OnTimer = DXTimer1Timer
:coder: Also, den Rumpf der Prozedur von Delphi generieren lassen, aber zuerst die alte Prozedur löschen, sonst gibt's ne Fehlermeldung "Eigenschaft und Methode DXTimer1 sind nicht kompatibel" und deinen Code in den Rumpf reinkopieren... Damit ging's dann bei mir. Hope it helps :stupid: |
Re: [DelphiX]Da sollte sich doch was bewegen ...
Vielen Dank!
Danke sehr, es funktioniert jetzt! ABER ^^ ist es richtig, das sich der Image zieht? Siehe: ![]() ![]() |
Re: [DelphiX]Da sollte sich doch was bewegen ...
Hi!
Streng genommen zieht sich das Image nicht, sondern es wird immer wieder auf den Hintergrund gezeichnet wird. Das kannst du nur verhindern, indem du ein Backgroundsprite verwendest! ciao fkerber |
Re: [DelphiX]Da sollte sich doch was bewegen ...
Vielen Dank!
Danke! Is ja eigentlich klar ^^ naja ... nu weiss ich es halt ... dann mach ich mal die anderen Tutorial weiter :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr. |
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