Ich möchte einen Timer TiBewegung initialisieren
Wenn ich den Timer vom Hauptformular "Karte" anmachen lasse
passiert nicht das, was in der Prozedur BewegungsTimer vereinbart wurde, sondern gar nix.
Habe ich vielleicht mit dem AOwner was falsch gemacht, dass der doch nicht nil ist?
Ich habe auf jeden Fall die zeitliche Reihenfolge beachtet: BewegungsTimer, init_BewegungsTimer, init_Monster
Code:
TMonster = class(TSprite)
private
TiBewegung: TTimer;
procedure BewegungsTimer(Sender: TObject);
.....
procedure TMonster.init_BewegungsTimer;
begin
TiBewegung := TTimer.Create(nil);
TiBewegung.Enabled := false;
TiBewegung.OnTimer := self.BewegungsTimer;
TiBewegung.Interval := 1000;
end;
Wenn ich den Timer vom Hauptformular "Karte" anmachen lasse
Code:
procedure TKarte.init_Monster(Monster: TMonster);
...
Monster.init_BewegungsTimer;
Monster.TiBewegung.Enabled := true;
Code:
procedure TMonster.BewegungsTimer(Sender: TObject);
var z: integer;
begin
z := random(3);
if zufall[z] = 1 then Left(100); //Left, Right, Up, Down sind geerbte Methoden des Typs TSprite.
if zufall[z] = 2 then Right(100);
if zufall[z] = 3 then Up(100);
if zufall[z] = 4 then Down(100);
end;
Habe ich vielleicht mit dem AOwner was falsch gemacht, dass der doch nicht nil ist?
Ich habe auf jeden Fall die zeitliche Reihenfolge beachtet: BewegungsTimer, init_BewegungsTimer, init_Monster
Zuletzt bearbeitet: