Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Dynamisches Sprite in DelphiX (https://www.delphipraxis.net/59970-dynamisches-sprite-delphix.html)

ghostdawg 31. Dez 2005 17:24


Dynamisches Sprite in DelphiX
 
Mein Gegenstand
Delphi-Quellcode:
  TGegenstand = class(TImageSprite)
    public
      procedure DoMove(MoveCount: Integer); override;
      constructor Create(AParent: TSprite); override;
    end;
Globale Vars:
prz:Integer;
Gegenstand:TGegenstand;

wird ja leider nur einmal erstellt:
Delphi-Quellcode:
constructor TGegenstand.Create(AParent: TSprite);
begin
  inherited Create(AParent);
  Image := Form1.DXImageList1.Items[prz];
  Width := Image.Width;
  Height := Image.Height;
  Visible := True;
end;
und bewegt:
Delphi-Quellcode:
DXSpriteEngine1.Move(1);
DXDraw1.Surface.Fill(0);
DXSpriteEngine1.Draw;
DxDraw1.Flip;
Nun möchte ich aber mit prz (das man im navi-menü bestimmen kann) die grafik des gegenstands verändern können. Wie kann ich nach einer Veränderung eine Aktualisierung hervorrufen? Kann ich den Constructor (hab von constructor keine ahnung, ich spiele heute zum ersten mal mit delphix rum) nochmal aufrufen? Wenn ja wie!

Frohes neues, und guten Rutsch!
ghostdog

Die Muhkuh 31. Dez 2005 17:36

Re: Dynamisches Sprite in DelphiX
 
Hmm,

versuche doch eine neue Methode zu machen:

Delphi-Quellcode:
TGegenstand = class(TImageSprite)
    public
      procedure DoMove(MoveCount: Integer); override;
      constructor Create(AParent: TSprite); override;

      procedure ChangeImage(Index: Integer);
    end;


procedure TGegenstand.ChangeImage(Index: Integer);
begin
  Image := Image := Form1.DXImageList1.Items[prz];
  Width := Image.Width;
  Height := Image.Height;
end;

ghostdawg 31. Dez 2005 18:37

Re: Dynamisches Sprite in DelphiX
 
Wie rufe ich diese Prozedur/Methode dann auf? Ich habe alles mögliche versucht:

ChangeImage;
ChangeImage();
ChangeImage(1);
TGegenstand.ChangeImage;
ChangeImage(Index);

:/ :gruebel:

JocalAreaNetwork 1. Jan 2006 12:19

Re: Dynamisches Sprite in DelphiX
 
Wenn deine Variable Gegenstand heißt, dann müsste es doch einfach nur das sein:

Gegenstand.ChangeImage(hier_dein_index)

Vorausgesetzt ist natürlich, dass der constructor bereits aufgerufen worden ist.

ghostdawg 1. Jan 2006 22:09

Re: Dynamisches Sprite in DelphiX
 
Schade, war wohl zu einfach um zu funzen. Wär perfekt gewesen:

Im Projekt Project1.exe ist eine Exception der KLasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0043CA76 in Modul 'Project1.exe' Schreiben von Adresse 0000000054'. Prozeß wurde angehalten. Fortfahren mit Einzelschritt oder Start.

Nach Fortfahren mit Start sagt er:
Zugriffsverletzung bei Adresse 0043CA76 in Module 'Project1.exe' Schreiben von Adresse 000000054.

ghostdawg 2. Jan 2006 17:19

Re: Dynamisches Sprite in DelphiX
 
Keiner hier der mich mit DelphiX auskennt?

Die Muhkuh 2. Jan 2006 17:30

Re: Dynamisches Sprite in DelphiX
 
Hi,

zeig nochmal deinen kompletten Code (bzw. nur die relevanten Stellen).

Oxmyx 2. Jan 2006 17:59

Re: Dynamisches Sprite in DelphiX
 
Das hat nichts mit DelphiX zu tun, wenn du beim Aufruf von
Image := Form1.DXImageList1.Items[prz];
eine Zugriffsverletzung bekommst, liegt das zu 99% daran, dass du versuchst auf ein Bild zuzugreifen, dass es gar nicht in dieser ImageList gibt. Denk dran dass ein Computer meistens bei 0 zu zählen beginnt, d.h. wenn du in deiner ImageList beispielsweise 8 Bilder drin hast, gehen die möglichen Indizes von 0-7.

ghostdawg 4. Jan 2006 12:25

Re: Dynamisches Sprite in DelphiX
 
Dann sinds hier die 1%. Prz konnte nur von 2-5 festgelegt werden und ich habe acht bilder drin gehabt. Habs jetzt anders gemacht und ein Objekt statt Sprite definiert, was als normales Bild gehandelt wird. Habe gehört, das alte DelphiX, was ich benutzen muss, macht da gerne Probleme.


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