Hallo!
Ich probiere hier schon seit gut 'ner Stunde rum, in einem per Event erzeugten Sprite ein eigenes Bitmap zuzuweisen, was aber überhaupt nicht klappen will ...
Delphi-Quellcode:
Z := FAttachedSprite.Z + 1;
FTargetX := AX;
FTargetY := AY;
FSpeed := ASpeed;
W := Round(Abs(FTargetX - X));
H := Round(Abs(FTargetY - Y));
Bmp := TBitmap.Create;
try
Bmp.PixelFormat := pf32Bit;
Bmp.Width := W;
Bmp.Height := H;
with Bmp.Canvas do
begin
Brush.Color := clYellow;
FillRect(ClipRect);
Pen.Color := clBlue;
Pen.Width := 4;
if FTargetX < X then
begin
StartX := Bmp.Width;
EndX := 0;
end
else
begin
StartX := 0;
EndX := Bmp.Width;
end;
if FTargetY < Y then
begin
StartY := Bmp.Height;
EndY := 0;
end
else
begin
StartY := 0;
EndY := Bmp.Height;
end;
MoveTo(StartX, StartY);
LineTo(EndX, EndY);
end;
// Alternativ Bmp mit irgendeinem Bild laden
// Bmp.LoadFromFile('C:\Temp\Test1.bmp');
TempSprite := TAnimationSprite.Create(Parent, FDraw);
TempSprite.X := X;
TempSprite.Y := Y;
TempSprite.Z := Z;
TempSprite.Image := TAdImage.Create(FDraw);
TempSprite.Image.Texture.LoadFromGraphic(Bmp);
TempSprite.Image.Restore; // geht nicht
Ich sehe aber nichts auf der Spielfläche.
Weise ich dagegen TempSprite.Image irgendein Image aus der globalen ImageList zu, funktionierts und das Sprite wird auf der Spielfläche gezeichnet.
Delphi-Quellcode:
TempSprite := TAnimationSprite.Create(Parent, FDraw);
TempSprite.X := X;
TempSprite.Y := Y;
TempSprite.Z := Z;
TempSprite.Image := FImageList[0]; // geht
Warum? Ich vermute, ich habe irgendwas bei der Initialisierung vergessen oder falsch gemacht. Ich kann aber nichts erkennen, vorallem weil's in der DynTexture-Demo ja auch so gemacht wird.