![]() |
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 |
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: |
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) |
Re: 2 DXTimer mit DelphiX!??
Hi,
wir nehmen auch nur ein DXTimer. Zeig mal ein bisschen Code, wie du die Objekte erstellt und drehst. |
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 |
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. |
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: |
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!
|
Re: 2 DXTimer mit DelphiX!??
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
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 |
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:
schreibst du dann eben
Sprite.X := Sprite.X + 2;
Delphi-Quellcode:
Um alles andere kümmert sich dann DelphiX. Das geht, weil die Koordinaten in DelphiX Floats sind und erst bei der Ausgabe gerundet werden.
Sprite.X := Sprite.X + 0.1;
|
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* |
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. |
Re: 2 DXTimer mit DelphiX!??
Zitat:
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 |
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 ![]() "Moin Airblader" drinne steht. Das hab ich mal für jemanden gemacht ;) Ist aber hilfreich |
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.
|
Re: 2 DXTimer mit DelphiX!??
Zitat:
ich glaube kaum das du denn QuellCode von Anyxist (wenn du das meinst) rausgibst oder? |
Re: 2 DXTimer mit DelphiX!??
Zitat:
@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 |
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 |
Re: 2 DXTimer mit DelphiX!??
Zitat:
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 ![]() |
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. |
Re: 2 DXTimer mit DelphiX!??
Zitat:
|
Re: 2 DXTimer mit DelphiX!??
Zitat:
Aber du hast Recht ^^ mfg theCOW |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 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