![]() |
Animation wird nicht richtig abgespielt mit DelphiX
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Ja, ich habe wieder ein Problem =) Also, ladet euch mal das Projekt runter und ihr werdet sehen, das die Explosions-Animation manchmal nicht richtig abgespielt wird (man sieht nur die 2 letzten Bilder). Dies passiert aber nicht immer. Also, es wäre nett, wenn mir jemand sagen könnte woran das liegt. Danke im vorraus mfg theCOW |
Re: Animation wird nicht richtig abgespielt mit DelphiX
Hi,
ich kann dir das nicht bestätigen. Bei mir wird alles angezeigt. Aber mir ist was anderes aufgefallen:
Delphi-Quellcode:
constructor TAnimation.Create(AParent: TSprite);
begin inherited Create(AParent); Image := Form1.DXImageList1.Items.Find('1'); Width := Image.Width; Height := Image.Height; Visible := true; AnimCount := 4; AnimLooped := true; AnimSPeed := 24/100; AnimStart := 0; end; procedure TAnimation.DoMove(MoveCount: integer); begin inherited DoMove(MoveCount); if FMove = true then begin if (IsUp in Form1.DXInput1.States) and (Y >= 0) then Y := Y-vY; if (IsDown in Form1.DXInput1.States) and (Y+Height <= Form1.DXDraw1.Height) then Y := Y+vY; if (IsLeft in Form1.DXInput1.States) and (X >= 0) then X := X-vX; if (ISRight in Form1.DXInput1.States) and (X+Width <= Form1.DXDraw1.Width) then X := X+vX; (* AnimCount := 4; AnimLooped := true; AnimSPeed := 24/100; AnimStart := 0; *) // Da gehört ins OnCreate und nicht in die DoMove-Procedure! Collision; end else if FCollision then begin if AnimPos = 3 then Dead; end; end; |
Re: Animation wird nicht richtig abgespielt mit DelphiX
Hi,
Hmm...dann hat mir mein Tutorial wohl Schwachsinn erzählt, dort ist es nämlich so gemacht....das hat mich auch schon gewundert muss ich sagen ^^ Vielleicht liegt auch das Anzeigeproblem daran... =) Wieder einmal Danke für deine Hilfe :thumb: EDIT: Hmm, das hat jetzt leider immer noch nichts an meinem Anzeigeproblem geändert...Wer kann denn noch dieses Problem feststellen??? mfg theCOW |
Re: Animation wird nicht richtig abgespielt mit DelphiX
Hi,
kannst du nochmal genau beschreiben, was nicht passiert? Das die nur die letzten zwei Bilder angezeigt werden ist komisch |
Re: Animation wird nicht richtig abgespielt mit DelphiX
Zitat:
In manchen Fällen allerdings werden von der Animation nur die letzten 2 Bilder angezeigt (vielleicht werden die ersten 2 ja ganz schnell abgespielt). Das passiert nicht immer...probier mal ein bischen aus mit der exe (ohne neu zu compilieren...es könte ja auch an meinm Delphi liegen??) mfg theCOW |
Re: Animation wird nicht richtig abgespielt mit DelphiX
Hi,
mach mal die Animationgeschwindigkeit (AnimSpeed) kleiner. Vielleicht 15/1000. Dann sieht du welche abgespielt werden |
Re: Animation wird nicht richtig abgespielt mit DelphiX
Hallo,
Hab ich gemacht....Da konnte man sehr schön sehen das nur das letzte Bild abgespielt worden ist. Ich hab weiterhin keine Ahnung weshalb das so ist...tritt das bei deinem Rechner etwa nicht auf??? Also ich denk mal net das es an meinem Rechner liegt (2.66 ghz 120gb festplatte 256 mb-ram).... Sag mal ob das Problem bei dir auch auftritt, ihc konnte nämlich noch keine Regelmäßigkeit feststellen, wann es auftritt....es scheint Willkürlich zu sein (was ich jedoch bezweifle). Danke im vorraus mfg theCOW |
Re: Animation wird nicht richtig abgespielt mit DelphiX
Hi,
ich glaub ich hab ihn:
Delphi-Quellcode:
Wie wäre es zuerst das Bild laden und AnimCount setzen :stupic: ?
procedure TAnimation.DoCollision(Sprite: TSprite; var Done: boolean);
begin if not FCollision then begin if Sprite is TStone then begin FCollision := true; FMove := false; Image := Form1.DXImageList1.Items.Find('Explosion'); Width := Image.Width; Height := Image.Height; AnimCount := Image.PatternCount; AnimSpeed := 12/1000; AnimLooped := false; AnimStart := 0; Form1.DXWaveList1.Items.Find('Explosion').Play(false); end; end; end; |
Re: Animation wird nicht richtig abgespielt mit DelphiX
Hallo,
Sry es hat nichts geändert.....Ich vermute mal, das er für die ersten 2-3 Bilder den Anim-Speed von dem "M" benutzt, welcher bei 24/100 ja ziemlich hoch ist. Nur wie kann ich das umgehen...vielleicht mit sleep(1) oder so.... EDIT: daran liegt es doch nicht....hab nämlich mal ausprobiert was passiert, wenn ich den "M" AnimSpeed auch auf 1/100 setze...das gleiche.. Was mir auch noch aufgefallen ist: Manchmal zeigt er die 2 ltzten Bilder, manchmal nur das letzte und manchmal die ganze Aniamtion....also das ist schon komisch Tritt das Problem bei dir eigentlich auch auf?? Danke im vorraus! mfg theCOW |
Re: Animation wird nicht richtig abgespielt mit DelphiX
Hi,
24/100? :shock: Nenene du, das müssen 24/1000 sein. Nciht 24/100. Deswegen klappte das bei mir auch. Ich hab da aus reflex 24/1000 hingeschrieben. Änders mal (auch bei der Explosion)
Delphi-Quellcode:
constructor TAnimation.Create(AParent: TSprite);
begin inherited Create(AParent); Image := Form1.DXImageList1.Items.Find('1'); Width := Image.Width; Height := Image.Height; Visible := true; AnimCount := 4; AnimLooped := true; AnimSPeed := 24/1000; //<-- AnimStart := 0; end; procedure TAnimation.DoMove(MoveCount: integer); begin inherited DoMove(MoveCount); if FMove = true then begin if (IsUp in Form1.DXInput1.States) and (Y >= 0) then Y := Y-vY; if (IsDown in Form1.DXInput1.States) and (Y+Height <= Form1.DXDraw1.Height) then Y := Y+vY; if (IsLeft in Form1.DXInput1.States) and (X >= 0) then X := X-vX; if (ISRight in Form1.DXInput1.States) and (X+Width <= Form1.DXDraw1.Width) then X := X+vX; Collision; end else if FCollision then begin if AnimPos = 3 then Dead; end; end; procedure TAnimation.DoCollision(Sprite: TSprite; var Done: boolean); begin if not FCollision then begin if Sprite is TStone then begin FCollision := true; FMove := false; Image := Form1.DXImageList1.Items.Find('Explosion'); Width := Image.Width; Height := Image.Height; AnimCount := Image.PatternCount; AnimSpeed := 12/1000; //<-- AnimLooped := false; AnimStart := 0; Form1.DXWaveList1.Items.Find('Explosion').Play(false); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 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