Einzelnen Beitrag anzeigen

I.A

Registriert seit: 14. Jan 2007
83 Beiträge
 
#671

Re: Andorra 2D [Ver. 0.35, 04.03.08]

  Alt 23. Jun 2008, 23:09
Hallo,

ich arbeite gerade das Kapitel "The Spriteengine" durch und erhalte eine
EAccessViolation an Adresse: $00459CBB, Lesen von Adresse 0024.
Der Debugger hält in der Unit AdDraws in der folgenden Prozedur auf der if-
Anweisung:
Delphi-Quellcode:
procedure TAdImage.Draw(Dest:TAdDraw;X,Y,PatternIndex:integer);
begin
  if (Texture.Texture.Loaded) and (Dest.CanDraw) and (AdMesh <> nil) then
  begin
    SetCurrentColor(255);
    if (PatternIndex < 0) then PatternIndex := 0;
    if (PatternIndex > PatternCount-1) then PatternIndex := PatternCount-1;
    DrawMesh(Dest, AdRect(X,Y,X+Width,Y+Height), Rects[PatternIndex],
      0, 0, 0, bmAlpha);
  end;
end;
Die Anwendung zeigt sich nicht an, ich erhalte stattdessen das Icon in der Taskleiste, das mir zeigt, das das Programm aktiv ist.

AUßerdem habe ich die Frage, wie groß das einzelne Bild ist. In der SetLine() Methode wird Start- und Enpunkt von 0..7 bzw 8..15 gesetzt, andererseits aber X = -96 bzw. Clientwidth + 96. Ich habe damit die Arbeitsweise der Methode noch nicht richtig verstanden. Was macht die SetLine() Methode?

Ist das bild 8 Pixel und der FRame 96 Pixel groß?

Die folgenden beiden Anweisungen stehen in der SetLine() Methode:
Delphi-Quellcode:
X:=ClientWidth + 96;
Y:=Clientheight - 96;

Ich verstehe nicht, warum ClientWidth addiert wird, um auf die neue Position zu kommen, bzw. ClientHeight subtrahiert wird, um auf die nächste Position zu kommen. Damit käme die Figur zwar, wenn sie rechts das Bild verlässt, links wieder rein, aber dann?

Die Anweisung Y:=Random(ClientHeight - 96) sagt mir, das die Figuren an zufälliger Position angezeigt werden sollen. Warum aber dann die Berechnung von X und Y mittels ClientWidth bzw ClientHeight?
Allerdings erhalte ich die o.g. Exception und mein Programm zeigt gar nix an. Ist das ein bekannter Fehler in der Bibliothek, oder habe ich was falsch gemacht?

Falls der Fehler bei mir liegt, hier noch mein aktueller Quelltext. Es ist der Quelltext des Kapitels "My first picture" und zwar der Teil, wo die Datei "Boy.bmp" geladen wird und Einzelbilder angezeigt werden, oder halt eines der Einzelbilder an zufälliger Position. Kann ich aus o.g. Grund nicht testen. Wer kann mir weiter helfen?
Angehängte Dateien
Dateityp: pas main_165.pas (4,1 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat