![]() |
Andorra 2D Bewegung von Figuren
Guten Abend liebe Delphi-Gemeinde,
ich beschäftige mich seit einer Woche mit Andorra 2D und wollte jetzt eine Figur über die Pfeiltasten steuern. Jetzt habe ich das Problem, jedes mal wenn ich die entsprechende Pfeiltaste drücke, bekomme ich eine neue Figur erstellt, ich hätte aber gerne, dass die Figur die Richtung ändert. Hier der entsprechende Quelltext:
Delphi-Quellcode:
type
Tcroco = class(TImageSprite) private protected procedure DoMove(TimeGap:double);override; public XSpeed:integer; //Die Geschwindigkeit in X-Richtung constructor Create(AParent:TSprite);override; procedure GoRight(Adspriteengine:TSpriteEngine; bild:TAdImageList); procedure GoLeft(Adspriteengine:TSpriteEngine; bild:TAdImageList); procedure SetLine; end;
Delphi-Quellcode:
wenn ich in der Zeile mit
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin case key of VK_LEFT:croco.goLeft(Adspriteengine, bild); VK_RIGHT:croco.goRight(Adspriteengine, bild); end; end; procedure Tcroco.GoRight(Adspriteengine:TSpriteEngine; bild:TAdImageList); begin inherited; with Tcroco.create(AdSpriteEngine) do begin Image:=bild.Find('croco'); X:=X + 0.4; AnimStart:=1; AnimStop :=2; AnimLoop:=true; AnimActive:=true; AnimSpeed:=30; XSpeed := -(random(100)+50); SetLine; end; end; procedure Tcroco.GoLeft(Adspriteengine:TSpriteEngine; bild:TAdImageList); begin inherited; with Tcroco.Create(AdSpriteEngine) do begin Image:=bild.Find('croco'); X:=X + 0.4; AnimStart:=1; AnimStop :=2; AnimLoop:=true; AnimActive:=true; AnimSpeed:=30; XSpeed := (random(100)+50); SetLine; end; end;
Delphi-Quellcode:
das create weglasse bekomme ich eine Fehlermeldung "Es ist eine Exception der Fehlerklasse EAccess Violation aufgetreten".
with Tcroco.Create(AdSpriteEngine) do
Kann mir vielleicht irgendjemand bei meinem Problem helfen? Vielen Dank. Lg garfield.92 |
AW: Andorra 2D Bewegung von Figuren
Hallo!
Soweit ich weiß, gibt es sogar ein Tutorial für die Bewegung eines Sprites mit Andorra, Google hilft :) Hmm, du erstellst bei Links- und bei Rechtsbewegungen ein neues Sprite! So würd ich das ungefähr machen
Delphi-Quellcode:
In dem Tutorial wird das sicher genauer erklärt!
var
Sprite : TSprite; procedure Form.Create(); begin //Sprite erstellen (Form.destroy -> Freigeben) Sprite := TSprite.Create(); ^.Speed := 1; ^.irgendwas := 'abc'; ... end; //Einfache Bewegung (L, R) procedure FormKeyPress(); begin case Key of 'a': Sprite.X := Sprite.X - 1; //Links, Rechts 'd': Sprite.X := Sprite.X + 1; //Links, Rechts 'w': Sprite.Y := Sprite.Y - 1; //Hinauf, Hinuter 's': Sprite.Y := Sprite.Y + 1; //^^ end; end; |
AW: Andorra 2D Bewegung von Figuren
Hallo,
also die Tutorials die ich auf google gefunden hab, hab ich alle schon durch gearbeitet und da steht absolut gar nix drin, wie mal die sprites selbst steuern kann. Ich probiers dann mal so, Vielen Dank :-) |
AW: Andorra 2D Bewegung von Figuren
Also, wenn ichs so umbaue bekomme ich die Fehlermeldung "Es ist eine Exception der Klasse EAccess Violation aufgetreten".
|
AW: Andorra 2D Bewegung von Figuren
Das in GoRight und GoLeft kein neues Sprit erzeugt werden soll ist schon richtig.
Die Ursache für die Zugriffsverletzung ist an anderer Stelle zu suchen. Vermutlich wird das Objekt nirgends erstellt oder ist bereits freigegeben. Wenn du mit dem Debugger noch nicht klar kommst, häng am besten das ganzes Projekt an deinen Beitrag. |
AW: Andorra 2D Bewegung von Figuren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, hab hier mal den Projektordner angehängt.
|
AW: Andorra 2D Bewegung von Figuren
Was mir auf den ersten Blick auffällt:
Zitat:
|
AW: Andorra 2D Bewegung von Figuren
ja, ich habs gemerkt, hatte da was ausprobiert, habs wieder dort raus gemacht und auch in der angehängten datei geändert, dort ist jetzt mein eigentliches problem drin.
|
AW: Andorra 2D Bewegung von Figuren
Also, es knallt, wenn Du eine der Pfeiltasten drückst, richtig? Ich habe kein Andorra installiert, aber mir fällt erst einmal nichts Besonderes auf (von dem eben Genannten einmal abgesehen). Hast Du einmal einen Haltepunkt gesetzt und bist schrittweise bis zum Fehler durchgegangen?
|
AW: Andorra 2D Bewegung von Figuren
also
Delphi-Quellcode:
immer wenn er in die letzte Zeile kommt, stürzt das programm ab. Wenn ich diese Zeile ausklammere ist es die oben drüber und wenn ich diese auch ausklammere tut sich gar nix.
procedure Tcroco.SetLine;
begin //Bewegt die Figur in eine neue Ebene XSpeed := -XSpeed; if XSpeed > 0 then begin AnimStart := 0; AnimStop := 7; X := -96; end else begin AnimStart := 8; AnimStop := 15; X := Engine.SurfaceRect.Right+96; end; //hier [B] Y := Random(Engine.SurfaceRect.Right-790);[/B] end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 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