Huhu, ich hab 2 Sprites: Eines das man bewegen kann und ein stationäres. Bei Kollision soll das bewegte verschwinden. Soweit so gut, tut es aber nicht
Eigentlich gehts hierrum
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TAnimation.DoCollision(Sprite: TSprite; var Done: Boolean); begin if Sprite is TGegenstand then begin beep; dead; {das mag nicht, aber genauso stands im Tutorial :( } end; end; |
Das dead scheint nicht zu funktionieren, denn das Sprite is nach wie vor da und bewegbar :/ Andere Befehle gehen aber an dieser Stellen sehr wohl z.B.
visible := False;
Hier is nochmal der ganze Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DXSprite, DXClass, DXDraws, DXInput;
type TForm1 = class(TForm) DXDraw1: TDXDraw; DXImageList1: TDXImageList; DXTimer1: TDXTimer; DXSpriteEngine1: TDXSpriteEngine; DXInput1: TDXInput; procedure FormCreate(Sender: TObject); procedure DXTimer1Timer(Sender: TObject; LagCount: Integer); private { Private-Deklarationen } public { Public-Deklarationen } end;
TAnimation = Class(TImageSprite) {Flugzeug} public procedure DoMove(MoveCount: Integer); override; constructor Create(Aparent: TSprite); override; procedure DoCollision(Sprite: TSprite; var Done: Boolean); override; end;
TGegenstand = class(TImageSprite) {Stein} public constructor Create(AParent: TSprite); override; end;
var Form1: TForm1; Animation: TAnimation; Gegen:TGegenstand;
implementation
{$R *.DFM}
//Create Stein constructor TGegenstand.Create(AParent: TSprite); begin inherited Create(AParent); Image := Form1.DXImageList1.Items.Find('Stein'); Width := Image.Width; Height := Image.Height; Visible := True; end;
//Create Flugzeug constructor TAnimation.Create(AParent: TSprite); begin inherited Create(AParent); Image := Form1.DXImageList1.Items.Find('1'); Width := Image.Width; Height := Image.Height; Visible := True; end;
//Startposis procedure TForm1.FormCreate(Sender: TObject); begin with TAnimation.Create(DXSpriteEngine1.Engine) do begin x:=0; y:=0; end; with TGegenstand.Create(DXSpriteEngine1.Engine) do begin x:=300; y:=150; end; end;
//Kollision procedure TAnimation.DoCollision(Sprite: TSprite; var Done: Boolean); begin if Sprite is TGegenstand then begin beep; dead; {das mag nicht, aber genauso stands im Tutorial :( } end; end;
//Flugzeug bewegen procedure TAnimation.DoMove(MoveCount: Integer); begin inherited DoMove(MoveCount); If isUp in Form1.DXInput1.States Then Y := Y -1; If isDown in Form1.DXInput1.States Then Y := Y + 1; If isLeft in Form1.DXInput1.States Then X := X -1; If isRight in Form1.DXInput1.States Then X := X +1; AnimCount := 6; AnimLooped := True; AnimSpeed := 20/1000; AnimStart := 0; Collision; end;
//Screen und Eingabe procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); begin DXInput1.Update; DXSpriteEngine1.Move(1); DXDraw1.Surface.Fill(0); DXSpriteEngine1.Draw; DXDraw1.Flip;
end;
end. |
btw, narf, ich hab eben zum absenden des beitrags f9 gedrückt
Thx 4 help, Ciao