HI,
ich bin grad dabei n Spiel zu programmieren. Dazu hab ich für das Hauptmenü und für die Level je eine Klasse erstellt.
Wenn das Progrmm startet wird das Hauptmenü erzeugt:
MainMenu := TMainMenu.Create; Da kann man dann bisl rum suchen und sobald man dann ein Level gewählt hat wird das
OnLevelSelected-Event aufgerufen. Und da drin hab ich jetzt versucht das Hauptmenü frei zu geben und dann das Level zu erstellen und zu laden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.MainMenuOnLevelSelected(LevelFile: String); begin FreeAndNil(MainMenu); Level := TLevel.Create(LevelFiles+LevelFile, FontContextID); Level.OnClose := LevelOnClose; end; |
genau so mach ich das wenn ich das Level beende und wieder ins Hauptmenü zurück will:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.LevelOnClose; begin FreeAndNil(Level); MainMenu := TMainMenu.Create(FontContextID); MainMenu.OnClose := MainMenuOnClose; MainMenu.OnLevelSelected := MainMenuOnLevelSelected; end; |
Aber es kommt jedesma ne Zugriffsverletzung. Ich hab auch schon den Umweg über ne Variable probiert: Variable auf True und sobald ich (bzw. das Programm) dazu Zeit hat wird das jeweilige Objekt frei gegeben. Aber das hat nix geändert.
Irgendwie bin ich ratlos. Und ich will das Menu auch nicht im Hintergrund weiter laufen lassen, weil mir das zu viel Speicher frisst!
Kann mir da jmd helfen?
MfG & Thx Bergmann.