Vad är DXSpriteEngine.Engine? Är den initierad? Är arrayen enemy initierad med instanser av TEnemyPos?
Symtomen tyder på att antingen DXSpriteEngine eller DXSpriteEngine.Engine eller EF[j].enemy är nil... Sätt en brytpunkt i koden och kolla värdena.
2 svar · 185 visningar · startad av Alpha II
TSpriteClass = class of TSprite;
TEnemyPos = record
c: TSpriteClass;
x: Double;
y: Double;
end;
TEnemyFormation = record
num: Integer;
enemy: array[0..9] of TEnemyPos;
end;
****
EF: array[0..MAXFORMATIONS] of TEnemyFormation;
****
procedure TMainForm.MakeEnemy();
var
i: integer;
j: integer;
Enemy: TSprite;
begin
Randomize();
if Random(100) = 0 then begin
j := Random(High(EF));
for i := 0 to EF[j].num do begin
with EF[j].enemy[i] do begin
Enemy := c.Create(DXSpriteEngine.Engine);
Enemy.X := x;
Enemy.Y := y;
end;
end;
end;
end;
Får acces violation här:
Enemy := c.Create(DXSpriteEngine.Engine);
Vad är DXSpriteEngine.Engine? Är den initierad? Är arrayen enemy initierad med instanser av TEnemyPos?
Symtomen tyder på att antingen DXSpriteEngine eller DXSpriteEngine.Engine eller EF[j].enemy är nil... Sätt en brytpunkt i koden och kolla värdena.
haha! vilket simpelt fel
tack för hjälpen. jag hade skapat en funktion som hette init() där jag initierade värderna i arrayen, men jag hade aldrig anropat funktionen :OO