AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Animation wird nicht richtig abgespielt mit DelphiX
Thema durchsuchen
Ansicht
Themen-Optionen

Animation wird nicht richtig abgespielt mit DelphiX

Ein Thema von theCOW · begonnen am 23. Jan 2005 · letzter Beitrag vom 23. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
theCOW

Registriert seit: 3. Sep 2004
29 Beiträge
 
#1

Animation wird nicht richtig abgespielt mit DelphiX

  Alt 23. Jan 2005, 13:31
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
Angehängte Dateien
Dateityp: zip testprogramm_211.zip (297,1 KB, 25x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Animation wird nicht richtig abgespielt mit DelphiX

  Alt 23. Jan 2005, 13:47
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;
  Mit Zitat antworten Zitat
theCOW

Registriert seit: 3. Sep 2004
29 Beiträge
 
#3

Re: Animation wird nicht richtig abgespielt mit DelphiX

  Alt 23. Jan 2005, 13:51
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


EDIT: Hmm, das hat jetzt leider immer noch nichts an meinem Anzeigeproblem geändert...Wer kann denn noch dieses Problem feststellen???



mfg
theCOW
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Animation wird nicht richtig abgespielt mit DelphiX

  Alt 23. Jan 2005, 13:59
Hi,

kannst du nochmal genau beschreiben, was nicht passiert?

Das die nur die letzten zwei Bilder angezeigt werden ist komisch
  Mit Zitat antworten Zitat
theCOW

Registriert seit: 3. Sep 2004
29 Beiträge
 
#5

Re: Animation wird nicht richtig abgespielt mit DelphiX

  Alt 23. Jan 2005, 14:04
Zitat von Spider:
Hi,

kannst du nochmal genau beschreiben, was nicht passiert?

Das die nur die letzten zwei Bilder angezeigt werden ist komisch
Naja, wenn ich mit dem "M" gegen die "Mauer" stoße, dann explodiert das "M".
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
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Animation wird nicht richtig abgespielt mit DelphiX

  Alt 23. Jan 2005, 14:12
Hi,

mach mal die Animationgeschwindigkeit (AnimSpeed) kleiner. Vielleicht 15/1000. Dann sieht du welche abgespielt werden
  Mit Zitat antworten Zitat
theCOW

Registriert seit: 3. Sep 2004
29 Beiträge
 
#7

Re: Animation wird nicht richtig abgespielt mit DelphiX

  Alt 23. Jan 2005, 14:16
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
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Animation wird nicht richtig abgespielt mit DelphiX

  Alt 23. Jan 2005, 14:21
Hi,

ich glaub ich hab ihn:
Delphi-Quellcode:
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;
Wie wäre es zuerst das Bild laden und AnimCount setzen :stupic: ?
  Mit Zitat antworten Zitat
theCOW

Registriert seit: 3. Sep 2004
29 Beiträge
 
#9

Re: Animation wird nicht richtig abgespielt mit DelphiX

  Alt 23. Jan 2005, 14:24
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
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Animation wird nicht richtig abgespielt mit DelphiX

  Alt 23. Jan 2005, 14:28
Hi,

24/100? 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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 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