Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi 2 DXTimer mit DelphiX!?? (https://www.delphipraxis.net/38667-2-dxtimer-mit-delphix.html)

theCOW 22. Jan 2005 14:51


2 DXTimer mit DelphiX!??
 
Hallo,

Ich habe ein Problem.....Wie kann man mit DelphiX 2 DXTimer auf einmal laufen lassen, irgendwie geht das net............

Ein Timer ist für eine Animation verantwortlich, aber sobald ich einen 2ten Timer einbaue, geht die Animation nicht mehr (weil der Timer nichtmehr geht).
Und das passiert sogar, wenn der 2te Timer garnichts macht, sogar wenn er nur die Form1.Caption ändert (hab das mal probiert, obs viellciht an einem Befehl liegt, den der Timer auslöst)

Ein Timer geht nicht, da ich immer mehr als einen brauche, sei es wegen mehreren Animationen oder anderen Dingen.

Es wäre sehr nett, wenn mir jemand dabei helfen könnte.
Ich meine, ihr benutzt doch bestimmt auch mehr als nur einen DXTimer.

Danke im vorraus

mfg
theCOW

Die Muhkuh 22. Jan 2005 15:33

Re: 2 DXTimer mit DelphiX!??
 
Hi,

du kannst alle Animationen in einen Timer machen. Da brauchst du keine zwei. Sonst bräuchte ich bei meinem Game mindesten 12 Stück davon :mrgreen:

theCOW 22. Jan 2005 15:47

Re: 2 DXTimer mit DelphiX!??
 
Hmmm......das stimmt schon..... aber was ist wenn ich unterschiedlich schnelle bewegungen brauche (2 sich bewegende Objekte) oder wenn ich was ganz anderes machen will...soll ich dann den normalen Timer benutzen.

Der ist ja nicht besonders genau, deshalb benutz ich lieber den DXTimer.....aber 2 gehn ja net.

Gehen bei euch 2 DXTimer auf einmal?? Probierts mal aus...und wenn nicht, wie macht ihr es, wenn ihr 2 unterschiedlich schnelle bewegungen von 2 unterschiedlichen Objekten machen wollt..oder eine bestimme Verzögerung...dafür bräuchte man ja 2......


Danke im vorraus


mfg
theCOW


Edit: Oder was ist, wenn man ein Objekt ganz langsam Bewegen möchte (bei Interval=0 geht es zwar schon langsam, aber nicht sehr langsam und X+0.5 geht net, da es ja ein integer Wert ist)

Macht ihr dass dann mitm normalen Timer?? (der wie gesagt in den kleine Zahlenregionen seeeeeehr ungenau ist)

Die Muhkuh 22. Jan 2005 15:55

Re: 2 DXTimer mit DelphiX!??
 
Hi,

wir nehmen auch nur ein DXTimer. Zeig mal ein bisschen Code, wie du die Objekte erstellt und drehst.

theCOW 22. Jan 2005 16:00

Re: 2 DXTimer mit DelphiX!??
 
Naja, hab noch net mit dem Spiel (das FireBall heissen wird ^^ ) angefangen, bin noch ein bischen im Tutorial

Dort wollt ich halt, anstatt nur die Animation darstellen, das Ding auch bewegen...und dann der Shock: auf einmal geht die Animation nimmer.....hmm, ich wüsste jetzt trotzdem Mal wie man ganz langsame Bewegung darstellt (hab gedacht, man könnte dann das Objekt vielleicht nur jedes 2te bzw. 3te mal um 1 Pixel bewegen, das wär dann schon sehr langsam) sagt mal ob ihr noch ne andere Möglichkeit kennt.

Ausserdem zur Info: das ist 2D nicht 3D (zu der Frage wie ich das Objekt "drehe"..falls das überhaupt gemeint war ^^ )


Danke im vorraus ^^

mfg
theCOW

Die Muhkuh 22. Jan 2005 16:03

Re: 2 DXTimer mit DelphiX!??
 
Hi,

wenn du mir (uns) mal etwas Code zeigen würdest, können wir dir helfen.

Ich wusste schon was du mit drehen meinst.

Zeig doch einfach mal her. Häng am besten mal das Projekt an.

malo 22. Jan 2005 16:04

Re: 2 DXTimer mit DelphiX!??
 
Wofür brauchst du denn genau einen DXTimer? Tun es denn keine normalen? :gruebel:

Und um es jedes 2. bzw. 3. Mal zu bewegen: Da gibts zwei so tolle Erfindungen, die nennen sich variablen und if-Abfragen :zwinker:

Maximus 22. Jan 2005 16:10

Re: 2 DXTimer mit DelphiX!??
 
Oder du könntest gleich mehrere Pixel auf einmal vorgehen, z.b. Objekt 1 alle 250 ms 3 Pixel Objekt 2 alle 250 ms 1 Pixel!

theCOW 22. Jan 2005 16:11

Re: 2 DXTimer mit DelphiX!??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von malo
Wofür brauchst du denn genau einen DXTimer? Tun es denn keine normalen? :gruebel:

Und um es jedes 2. bzw. 3. Mal zu bewegen: Da gibts zwei so tolle Erfindungen, die nennen sich variablen und if-Abfragen :zwinker:

zu 1: weil der DXTimer genauer läuft

zu 2: ich weiss schon wie man etwas nur jedes 2te bzw.3te mal macht -.- (ich arbeite in ner Software-Firma ^^ )

@Spider: ok ich häng es an (die funktionierende Version ohne 2ten Timer) in das Projekt wollte ich dann noch einen DXTimer einbauen um das Ding zu bewegen.


Danke im vorraus =P


mfg
theCOW

Flogo 22. Jan 2005 16:17

Re: 2 DXTimer mit DelphiX!??
 
Du kannst mit AnimSpeed angeben wie schnell sich was bewegen soll. Das geht bei jedem Sprite einzeln und deshalb funktionieren auch unterschiedliche (Animations-) Geschwindigkeiten bei einem Timer.

Um die Sprites unterschiedlich schnell zu bewegen (nicht animieren!) musst du die doMove-Methode entsprechend bearbeiten. Statt
Delphi-Quellcode:
Sprite.X := Sprite.X + 2;
schreibst du dann eben
Delphi-Quellcode:
Sprite.X := Sprite.X + 0.1;
Um alles andere kümmert sich dann DelphiX. Das geht, weil die Koordinaten in DelphiX Floats sind und erst bei der Ausgabe gerundet werden.

Elite 22. Jan 2005 16:17

Re: 2 DXTimer mit DelphiX!??
 
Im Übrigen lässt sich die Geschwindigkeit einer Animation auch mit AnimSpeed bei jedem einzelnen Sprite individuell einstellen.
*hofft, dass das kein sinnloser Kommentar war*

Die Muhkuh 22. Jan 2005 16:20

Re: 2 DXTimer mit DelphiX!??
 
Hi,

hier mal meine korrigierte Version:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    DXDraw1: TDXDraw;
    DXSpriteEngine1: TDXSpriteEngine;
    DXImageList1: TDXImageList;
    DXTimer1: TDXTimer;
    procedure FormCreate(Sender: TObject);
    procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TAnimation = class(TImageSprite)
  private
    vx, vy: Double;
  public
    constructor Create(AParent: TSprite); override;

    procedure DoMove(MoveCount: Integer); override;
  end;


var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  with TAnimation.Create(DXSpriteEngine1.Engine) do
  begin
    X := 0;
    Y := 0;
  end;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  DXSpriteEngine1.Move(1);
  DXDraw1.Surface.Fill(0);
  DXSpriteEngine1.Draw;
  DXDraw1.Flip;
end;

{ TAnimation }

constructor TAnimation.Create(AParent: TSprite);
begin
  inherited;

  vX := 2;
  vY := 2;

  Image := Form1.DXImageList1.Items.Find('1');
  Width := Image.Width;
  Height := Image.Height;
  AnimCount := 4;
  AnimLooped := True;
  AnimSpeed := 24/100;
  AnimStart := 0;
end;

procedure TAnimation.DoMove(MoveCount: Integer);
begin
  inherited;

  if X <= 0 then
    vX := 2;

  if X >= Form1.DXDraw1.Width - Width then
    vX := - 2;

  if Y <= 0 then
    vY := 2;

  if Y >= Form1.DXDraw1.Height - Height then
    vY := - 2;

  X := X + vX;
  Y := Y + vY;
end;

end.

theCOW 22. Jan 2005 16:28

Re: 2 DXTimer mit DelphiX!??
 
Zitat:

Zitat von Spider
Hi,

hier mal meine korrigierte Version:

Delphi-Quellcode:
unit Unit1;

[....]

end.

Ja, da komm ich erst hin beim Tutorial (ja ich we3iss, bin blutigster Anfänger ^^) aber trotzdem thx..

Ach und: ich wusste garnet das die Koordinaten Floats sind, thx, damit wären meine Probleme gelöst.

Kann jemand vielleicht mal den Quelltext eines komplizierteren Programmes posten (man lernt nie aus).

Wäre nett, weil dann köntt ich mal schauen wie das so gemacht ist (und ich meine nicht nur von den Animationen her =) )

In Tutorials ist das zwar ganz nett erklärt, aber es geht nichts über ein echtes Beispiel ^^



Danke im vorraus xD


mfg
theCOW

Die Muhkuh 22. Jan 2005 16:31

Re: 2 DXTimer mit DelphiX!??
 
Hi,

ich könnte dir jetzt mein Autorennen posten (ist auch in der Freeware-Sparte), aber das mach ich nicht :P

Wie es der Zufall so will, hab ich hier was. Nicht wundern das da
"Moin Airblader" drinne steht. Das hab ich mal für jemanden gemacht ;) Ist aber hilfreich

Flogo 22. Jan 2005 16:32

Re: 2 DXTimer mit DelphiX!??
 
Ich kann leider grad nichts posten (Ist noch nicht fertig :wink: ) würd mir an deiner Stelle aber auf jeden Fall die Demos von DelphiX mal durchschauen. Da ist glaub ich auch ein Spiel dabei.

Die Muhkuh 22. Jan 2005 16:34

Re: 2 DXTimer mit DelphiX!??
 
Zitat:

Zitat von Flogo
Ich kann leider grad nichts posten (Ist noch nicht fertig :wink: ) würd mir an deiner Stelle aber auf jeden Fall die Demos von DelphiX mal durchschauen. Da ist glaub ich auch ein Spiel dabei.

Hi Flo,

ich glaube kaum das du denn QuellCode von Anyxist (wenn du das meinst) rausgibst oder?

theCOW 22. Jan 2005 16:34

Re: 2 DXTimer mit DelphiX!??
 
Zitat:

Zitat von Flogo
Ich kann leider grad nichts posten (Ist noch nicht fertig :wink: ) würd mir an deiner Stelle aber auf jeden Fall die Demos von DelphiX mal durchschauen. Da ist glaub ich auch ein Spiel dabei.

Könntest du mir auch noch den Link geben ^^

@spider: Thx ^^, werds mir gleich mal anschauen.


Postet nur weiter alles, was hilfreich sein könnte (ich bin ja ausserdem nicht der einzige, dem sowas hilfreich sein kann ^^ )



Danke an alle Poster und alle, die noch posten ^^


mfg
theCOW

theCOW 22. Jan 2005 16:46

Re: 2 DXTimer mit DelphiX!??
 
@Spider:

Hab mir mal das Auto-Prog angeschaut ^^

Also, hat es etwas damit auf sich, das du die Definitionen auf verschiedene Units verteilt hast?
Ich mein..man könnte ja auch alles in ein Unit machen.
Oder ist es nur der Übersicht wegen? =)



Danke im voraus

mfg
theCOW

Flogo 22. Jan 2005 16:47

Re: 2 DXTimer mit DelphiX!??
 
Zitat:

Zitat von Spider
Hi Flo,

ich glaube kaum das du denn QuellCode von Anyxist (wenn du das meinst) rausgibst oder?

:hi:
Auf jeden Fall nicht in dem Zustand in dem er jetzt ist :freak: Wenn alles fertig ist und ich das ganze noch 3-4 mal optimiert, neugeschrieben und verbessert habe denke ich nochmal drüber nach.

@dieKuh:
Wie Link? Du hast dir doch DelphiX gezogen oder? In dem Verzeichnis von DelphiX ist ein Unterverzeichnis \Samples da sind die Demos drin. Bei UnDelphiX sind glaub ich noch viel mehr dabei. Die meisten sind ziemlich klein und erklären eine spezielle Komponente/Problem. Ich denk da ist auf jeden Fall was für dich dabei.

Die Muhkuh 22. Jan 2005 16:47

Re: 2 DXTimer mit DelphiX!??
 
Hi,

ist einfach nur für ne gute Übersicht. Ist glaub ich nicht so gut, wenn du alles in einer Unit hast. Da blickst du irgendwann nicht mehr durch. Aber mache wie es dir beliebt.

Flogo 22. Jan 2005 16:49

Re: 2 DXTimer mit DelphiX!??
 
Zitat:

Zitat von theCOW
Ich mein..man könnte ja auch alles in ein Unit machen.

Das wird bei größeren Projekten die Hölle.

theCOW 22. Jan 2005 16:52

Re: 2 DXTimer mit DelphiX!??
 
Zitat:

Zitat von Flogo
Zitat:

Zitat von theCOW
Ich mein..man könnte ja auch alles in ein Unit machen.

Das wird bei größeren Projekten die Hölle.

Hatte bisher noch kein größeres Projekt (zumindest nicht privat ^^ )

Aber du hast Recht ^^


mfg
theCOW


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 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