Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#716

Re: Andorra 2D [Ver. 0.40, 01.07.08]

  Alt 5. Jul 2008, 21:17
Hallo, inherited.

Also ich habe eine Klasse namens TSgGame, die sich um die Erstellung und Verwaltung des AdDraw-Objekts kümmert. Das Fenster, auf das gezeichnet werden soll, wird als Parameter Parent übergeben.
Delphi-Quellcode:
constructor TSgGame.Create(const Parent: tWinControl);
begin
  inherited Create;

  fPerformanceCounter := tAdPerformanceCounter.Create;
  AdDraw := TAdDraw.Create(parent);
  AdDraw.DllName := 'AndorraDX93D.dll';
  {...}
// Setup(parent.width,parent.height); <-- hab ich testweise in's OnCreate der Form verschoben. weiß nicht mehr wieso >.<
  adDraw.Initialize;
end;
Meine Mainform erzeugt im OnCreate eine Instanz von TSgGame:
Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
begin
  {...}
  pDrawScreen.Align := alClient; // pDrawScreen ist das TPanel auf das gezichnet werden soll
  pDrawScreen.Caption := '...';
  {...}
  game := tsggame.Create(pDrawScreen);
  game.setup(pdrawscreen.width,pdrawscreen.height);
  {...}
  windowstate := wsmaximized;
  {...}
end;
TSgGame.Setup sieht so aus:
Delphi-Quellcode:
procedure TSgGame.setup(width, height: integer);
begin
  {...}
  if AdDraw.Initialized then
    AdDraw.Setup2DScene;
end;
Der Vollständigkeit halber noch der Code aus dem OnResize des Panels:
Delphi-Quellcode:
procedure TfrmMain.pDrawScreenResize(Sender: TObject);
begin
  if assigned(game) then // <-- Die Prüfung ist wegen dem doofen Bug, dass OnResize auch nach dem OnDestroy noch aufgerufen wurde oder so...
    game.setup(pdrawscreen.width,pdrawscreen.height);
end;
  Mit Zitat antworten Zitat