Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [DelphiX]Da sollte sich doch was bewegen ... (https://www.delphipraxis.net/10960-%5Bdelphix%5Dda-sollte-sich-doch-bewegen.html)

Grobi 28. Okt 2003 18:16


[DelphiX]Da sollte sich doch was bewegen ...
 
Delphi-Quellcode:
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;
Das ist der original Code aus einem Tutorial welches ich gerade Online nich finde :angle:

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:

Grobi 28. Okt 2003 20:56

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*

ElDuckle 28. Okt 2003 21:11

Re: [DelphiX]Da sollte sich doch was bewegen ...
 
Hi,

das Problem hatte heute schon mal jemand, siehe:Frage zur Spieleprogrammierung

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

Grobi 29. Okt 2003 12:53

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:
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.
Übrigens, hier das tut: http://www.delphi-treff.de/content/t...dex.php4?kat=3

Liegt es vielleicht auch daran, das ich Delphi6 benutze, die Komponente aber eigentlich für Delphi7 ist? Es kam kein Fehler beim installieren ...

Grobi 29. Okt 2003 13:11

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.

ElDuckle 29. Okt 2003 14:35

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:
 OnTimer = DXTimer1Timer
und die TimerProzedur wird nie aufgerufen.

: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:

Grobi 29. Okt 2003 16:43

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: http://www.grobi.gamingplanet.info/g...den-smilie.jpg
http://www.grobi.gamingplanet.info/g...den-smilie.jpg

fkerber 29. Okt 2003 17:05

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

Grobi 29. Okt 2003 17:17

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 15:14 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