Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Dead; (https://www.delphipraxis.net/38706-dead%3B.html)

theCOW 23. Jan 2005 10:22


Dead;
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

Also ich habe das Problem, das in meinem Programm der Befehl Dead; nicht so funktionieren will.

Also es geht um ein Objekt, das gegen ein anderes stösst und dann explodiert. Allerdings bleibt die Explosion dann bei einem Bild stehen (scheint immer unterscheidlich zu sein, welches).

Vielleicht kann mir jemand helfen damit.

Im Anhang ist das Programm.



Danke im vorraus!


mfg
theCOW

Die Muhkuh 23. Jan 2005 10:26

Re: Dead;
 
Hi,

der Fehler liegt daran, das du inherited DoMove nur aufrufst, wenn FMove = true ist.

Wenn du das so machst:

Delphi-Quellcode:
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;

    Collision;
  end
  else
    if FCollision then
    begin
      if AnimPos = 3 then
        Dead;
    end;
end;
Sollte alles klappen. Jetzt musste nur noch die Animation geschwindigkeit der Explosion angeben, da diese doch ein bisschen schnell ist ;)

theCOW 23. Jan 2005 10:31

Re: Dead;
 
Zitat:

Zitat von Spider
Hi,

der Fehler liegt daran, das du inherited DoMove nur aufrufst, wenn FMove = true ist.

Wenn du das so machst:

Delphi-Quellcode:
procedure TAnimation.DoMove(MoveCount: integer);
begin

[...]

end;
Sollte alles klappen. Jetzt musste nur noch die Animation geschwindigkeit der Explosion angeben, da diese doch ein bisschen schnell ist ;)

Ich will ja nix sagen, aber GENAU so hab ich es gemacht oO

Schau dir mal den Quelltext wieder an, dann müssteste das eigentlich sehen.

Das ist ja grad das Problem ^^





Danke schonmal im vorraus

mfg
theCOW

Die Muhkuh 23. Jan 2005 10:34

Re: Dead;
 
Hi,

im Quelltext von dir steht:

Delphi-Quellcode:
procedure TAnimation.DoMove(MoveCount: integer);
begin
  // (1.)
  if FMove = true then
  begin
    inherited DoMove(MoveCount); // Das muss zu (1.)

    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;

    Collision;
  end
  else
    if FCollision then
    begin
      if AnimPos = 3 then
        Dead;
    end;
end;
So steht das. Und das geht ja nich.

Daniel 23. Jan 2005 10:35

Re: Dead;
 
@theCOW: Bitte ändere den Titel Deines Beitrages. Dieser ist absolut nicht aussagekräftig.
Siehe auch FAQ-Eintrag zum Stichwort "8""8".

theCOW 23. Jan 2005 10:35

Re: Dead;
 
Ok thx, so gehts ^^


Hab ich ja ganz vergessen bzw. übersehen.

Danke :thumb:



Frage wäre damit erledigt.


mfg
theCOW

Edit: @Admin: Ja, sry, werds mir für das nächste mal merken, Thread kann geschlossen werden.


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