Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [DelphiX] Wann wird animation abgespielt? (https://www.delphipraxis.net/50842-%5Bdelphix%5D-wann-wird-animation-abgespielt.html)

ISAS 1. Aug 2005 22:46


[DelphiX] Wann wird animation abgespielt?
 
Arbeite gerade an einem Netzwerk-Rollenspiel. Habe nun ein problem mit der Animation. Es is aber keine Anfängerfrage, glaub ich zumindest. Also soetwas wie PatternHeight oder falsche Einstellung ist es nicht. Es funktioniert ja, aber dann doch nicht. Also, schildere hier mal mein Problem:


Habe ein Bild, was alle Animationsbilder enthält. Jetzt sendet er mir Spieler[SpielerNr].AnimPos übers netzwerk zu einem anderen Computer. (Spieler[Nummer].AnimPos:=TSend(Data^).AnimPos; //So wird das empfangen, aber unwichtig). Dieser Code, wo die AnimPos festgelegt wird, ist unter dem Ereignis DXPlay.OnMessage. Nun würde ja alles funktionieren, aber ein einziger klitzekleiner Fehler strengt meine Gehirnzellen schon seit Stunden an. Wenn ich bei dem einen Client gar nichts tue, dann verändert sich zwar die Position des Spielers der vom 2. Client gesteuert wird, aber animation gibt es keine beim 1. Client. Bewege ich mich mit dem Spieler beim 1. Client, dann funktionierts bzw wird die animation abgespielt. Das wird dann wahrscheinlich an der DOMove prozedure liegen. Dort wird ja auch die Animation richtig abgespielt.


Nun wollte ich euch fragen, wie man festlegen kann, welches Animationsbild ein Sprite hat. Das Bild soll aber sofort übernommen werden, ansonsten bekomme ich den Fehler nicht weg!!! Also so:

Delphi-Quellcode:
Spieler[SpielerNr].AnimPos:=3; //Wenn das funken würde, hätt ich kein Problem.
Er übernimmt die AnimPos aber erst, wenn ich mich Bewege.

Cicaro 17. Jan 2006 14:48

Re: [DelphiX] Wann wird animation abgespielt?
 
Zitat:

Zitat von ISAS
Er übernimmt die AnimPos aber erst, wenn ich mich Bewege.

Wird die Änderung nicht beim Neuzeichnen des Sprites sichtbar ?

Wenn du das so machst

Delphi-Quellcode:
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  DXSpriteEngine1.Move(LagCount);
  DXDraw1.Surface.Fill(0);
  DXSpriteEngine1.Draw;
  DXDraw1.Flip;
end;
dann sollten die Sprites in einer (einstellbar) hohen Frequenz immer wieder neugezeichnet werden.


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