Also ich habe jetzt eine Lösung gefunden, verstehe sie aber nicht
Ich habe eine neue Variable bShowCardSprite eingeführt, welche im DoCollision wie folgt gesetzt wird:
Delphi-Quellcode:
procedure TACard.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
inherited;
if (Sprite = MouseCursor) AND (Done<>true) then
begin
//beep;
frmMain.DXSCARD.Items.Clear;
frmMain.DXSCARD.Items.Add;
frmMain.DXSCARD.Items[0].Picture.loadfromfile(MYPFAD+fed+'\small\'+fnummer+'.jpg');
frmMain.DXSCARD.Items[0].Name:='scard';
frmMain.DXSCARD.Items.Restore;
CardSprite.Image :=frmMain.DXSCARD.Items.Find('scard');
CardSprite.Width:=90;
CardSprite.Height:=127;
CardSprite.X:=50;
CardSprite.Y:=300;
CardSprite.Visible:=true;
bShowCardSprite:=true;
Done:=true;
end
else
bShowCardSprite:=false;
end;
Im OnTimer steht dann:
Delphi-Quellcode:
procedure TfrmMain.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
try
DXDraw1.Surface.Fill( clwhite );
ProcessGamestate;
if bShowCardSprite=false then
CardSprite.Visible:=false;
DXSpriteENgine1.Dead;
DXSpriteEngine1.Move(2);
DXSpriteEngine1.Draw;
except
dxtimer1.Enabled:=false;
messagedlg('An error has occurred',mterror,[mbok],0);
end;
dxdraw1.Flip;
end;
Und damit funktioniert es - ob es schön ist und warum es funktioniert, weiß ich nicht.
Gruß Kay