Zum Beispiel hab ich hier n Fehler beim erzeugen eines Testbildes praktisch ein Hintergrundstein im Spiel
TSteinII is ne eigen Klasse die ich mir gemacht hab
Delphi-Quellcode:
//------- Spielfeld ------
imgHintergrund := dat.getHinteg(dat.getlevel(0).gethintergrund);
//feld.createlevel(dat,0,adSpriteEngine);
test := TSteinII.Create(adSpriteEngine);
test.initialize(0,0,-150,2,0);
test.Image := dat.getSteine(2);
//yoda := TFigure.create(dat.getFigureimg,0,panSpielfeld);
//yoda.imgAnzeige.Left := 30;
//yoda.imgAnzeige.top := 300;
beim Create des TSteinII
Delphi-Quellcode:
unit USteinII;
interface
uses
AdDraws, AdClasses, AdTypes, AdSprites;
type
TSteinII =
class(TBackgroundSprite)
private
X : integer;
Y : integer;
wert : integer;
spezial : integer;
protected
procedure DoMove(TimeGap: double);
override;
public
XSpeed:integer;
constructor Create(AParent: TSprite);
override;
procedure initialize(posx,posy,speed,wert,speziale : integer);
procedure SetLine;
end;
implementation
//------------------------------------------------------------------------------
// On Create
//------------------------------------------------------------------------------
constructor TSteinII.Create(AParent: TSprite);
begin
inherited;
X := 0;
Y := 0;
end;
//______________________________________________________________________________
//------------------------------------------------------------------------------
// Initialize
//------------------------------------------------------------------------------
procedure TSteinII.initialize(posx,posy,speed,wert,speziale : integer);
begin
self.wert := wert;
self.XSpeed := speed;
self.X := posx;
self.Y := posy;
self.spezial := speziale;
end;
//______________________________________________________________________________
//------------------------------------------------------------------------------
// Do Move
//------------------------------------------------------------------------------
procedure TSteinII.DoMove(TimeGap: double);
begin
inherited;
{//Der Teil aus der Renderprozedur, der sich um die Bewegungen kümmert
X := X + XSpeed*TimeGap;
if ((X > Engine.SurfaceRect.Right) and (XSpeed > 0)) or
((X < -96) and (XSpeed < 0)) then
begin
SetLine;
end; }
end;
//______________________________________________________________________________
//------------------------------------------------------------------------------
// SetLine
//------------------------------------------------------------------------------
procedure TSteinII.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;
Y := Random(Engine.SurfaceRect.Right-96); }
end;
//______________________________________________________________________________
end.
Fehler Folgender in der
Unit AdSprites bei AParent.Add(self)
Delphi-Quellcode:
procedure TSprite.SetParent(AParent: TSprite);
begin
if AParent <> nil then
begin
FParent := AParent;
FEngine := FParent.Engine;
if FParent <> nil then
begin
FParent.FList.Remove(Self);
end;
AParent.Add(Self);
end
else
begin
FParent := nil;
FEngine := nil;
end;
end;
wo liegt hier der Fehler ich krieg ne Zugriffsverletzung