AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [Andorra2D] 2 AdDraws, nur eins wird gezeichnet
Thema durchsuchen
Ansicht
Themen-Optionen

[Andorra2D] 2 AdDraws, nur eins wird gezeichnet

Ein Thema von GrubenPete · begonnen am 11. Mär 2008 · letzter Beitrag vom 12. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
GrubenPete

Registriert seit: 11. Apr 2006
Ort: Altenburg
8 Beiträge
 
Turbo Delphi für Win32
 
#1

[Andorra2D] 2 AdDraws, nur eins wird gezeichnet

  Alt 11. Mär 2008, 18:05
Hey, ich benutze die Andorra2D Engine um ein Menu und ein Spielfeld anzuzeigen.
Das Menü wird ein einem zur Laufzeit erstellten Formular mit einer AdDraw-komponente dargestellt, das Spielfeld mit einer anderen Instanz der AdDraw-Komponente auf dem 'Hauptformular'

Je nachdem welches AdDraw zuerst 'created' wird, wird nur das Spielfeld oder das Menu angezeigt. (Das was zuletzt erstellt wurde, wird angezeigt)...

Habt ihr eine Idee, an was das liegen könnte ?

P.S.: Hab Hier (Delphi-Treff) schonmal nen Post aufgemacht, aber dort wusste scheinbat niemand was darüber...(also nur zur Info)
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: [Andorra2D] 2 AdDraws, nur eins wird gezeichnet

  Alt 11. Mär 2008, 18:07
Hmm, warum nimmst Du nicht nur eins und zeichnest dort alles?
  Mit Zitat antworten Zitat
GrubenPete

Registriert seit: 11. Apr 2006
Ort: Altenburg
8 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [Andorra2D] 2 AdDraws, nur eins wird gezeichnet

  Alt 11. Mär 2008, 18:22
Hui, das ging aber fix
Naja, hab eine Spielfläche (AdDraw Nr. 1; Form1) und ein Menü (AdDraw Nr. 2; Form2).
Form2 wird zur Laufzeit 'auf' Form1 erstellt.

Das mit einem AdDraw hat irgendwie nicht geklappt...
Hab ne Klasse von TPanel abgeleitet und dort die Spielfläche reingepackt. Wenn ich dann das AdGUI Menü hinzugefügt hab, konnte ich das zwar anzeigen lassen, aber der GuiConnector zeigte keine Wirkung, also es wurde kein Event ausgelöst, wenn man mit der Maus über die Buttons fuhr.
Wenn mir einer sagen kann, wie ich die Events manuell mit MousePos oder so ausführen kann, dann wäre mir auch sehr geholfen^^
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: [Andorra2D] 2 AdDraws, nur eins wird gezeichnet

  Alt 11. Mär 2008, 18:26
Hi,

ich würde nur eine Form nehmen und dort ein AdDraw drauf werfen und dann im Programm eine Enumeration erstellen. z.B.:

Delphi-Quellcode:
type
  TAppMode = (apMenu, apGame);
Und beim Malen entscheidest Du dann, was gemalt werden soll, ob Menü oder Spielfläche or whatever.

Delphi-Quellcode:
proceudere Malen; // Hab es gerade beim AdDraw nicht im Kopf *g*
  case AppMode of
    apMenu: DrawMenu;
    apGame: DrawGame;
  end;
end;
So in der Art hatte ich das mal beim Rumspielen mit Andorra gemacht, hat eig. auch recht gut funktioniert.
  Mit Zitat antworten Zitat
GrubenPete

Registriert seit: 11. Apr 2006
Ort: Altenburg
8 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [Andorra2D] 2 AdDraws, nur eins wird gezeichnet

  Alt 11. Mär 2008, 18:44
Das is ne gute Idee, aber mein Problem mit den Events wird dadurch noch nicht gelöst.
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#6

Re: [Andorra2D] 2 AdDraws, nur eins wird gezeichnet

  Alt 11. Mär 2008, 18:57
Hallo,

mehrere Instanzen von TAdDraw werden zurzeit leider nicht Unterstützt.

Die neue Version (0.3.5) sollte eigentlich beliebige Steuerelemente (also Form, Panel etc.) unterstützen und deren Events verknüpfen.
Ein anderer Weg ist die Events manuell mit dem GUI-System zu verbinden. Zitat aus dem GUI-Tutorial:
Zitat:
[Das manuelle Verknüpfen] bringt sogar noch einen weiteren Vorteil mit sich: Man stelle sich ein Aufbauspiel vor, in dem sich frei verschiebbare Fenster auf dem Bildschirm befinden. Woher soll das Spiel nun wissen, ob wir auf das Fenster, oder auf das Spielfeld geklickt haben? Bei der manuellen Verknüpfung ist das kein Problem:
Delphi-Quellcode:
procedure Form1Click(Sender:TObject)
var
  p:TPoint;
begin
  GetCursorPos(p); //Aktuelle Mauszeigerkoordinaten auslesen
  p := ScreenToClient(p); //In Koordinaten relativ zum Formular umrechnen
  if not AdGUI.Click(p.X, p.Y) then //Ereignisbehandlung ausführen
  begin
   //Es wurde auf das Spielfeld geklickt
  end;
end;
Hoffe geholfen zu haben und Danke fürs verwenden von Andorra 2D. Wenn du noch weitere Fragen hast, dann zögere nicht diese zu stellen.

Andreas
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
GrubenPete

Registriert seit: 11. Apr 2006
Ort: Altenburg
8 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [Andorra2D] 2 AdDraws, nur eins wird gezeichnet

  Alt 11. Mär 2008, 19:23
Ok, danke erstmal...
Werd dann mal die neue Version probieren und wenn das nichts bringt den letzten Vorschlag...
Sascha
  Mit Zitat antworten Zitat
GrubenPete

Registriert seit: 11. Apr 2006
Ort: Altenburg
8 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: [Andorra2D] 2 AdDraws, nur eins wird gezeichnet

  Alt 11. Mär 2008, 20:02
Doch noch ne Frage^^
Hab ich das jetzt richtig verstanden ?!
Ich habe also meine Beiden Klassen, abgeleitet von TPanel... Ein Menü und ein Spielfeld.
Zunächst erstelle ich also 2 TAdWindowFramework's und lasse jeweils eines auf mein MenüPanel und eines auf mein SpielfeldPanel zeigen. (BindTo)
Dann für mein Menü noch ein AdGuiConnector.
Danach initialisiere ich mein AdDraw und es sollte funktionieren ?!
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#9

Re: [Andorra2D] 2 AdDraws, nur eins wird gezeichnet

  Alt 11. Mär 2008, 20:11
Hallo,

eigentlich sollte einfach folgendes funktionieren:

- Initialisieren des AdDraw
- Laden der GUI
- TAdGUIConnector verwenden um die GUI mit dem Panel zu verbinden
- Die Events für das Spiel können wie gewohnt verwendet werden

Wie schon oben gesagt, kann eine Anwendung gleichzeitig maximal eine TAdDraw Komponente besitzen - du musst einfach bedenken, dass TAdDraw die komplette DirectX/OpenGL Schnittstelle kapselt. Und von dieser kann es in einer Anwendung eben nur eine geben.

Wie Manuel oben schon geschrieben hat, kannst du sowohl Menü als auch Spiel auf ein AdDraw (oder in deinem Fall deine Komponente) zeichnen. Das Menü kannst du einfach über "AdGUI.Visible := false" unsichtbar machen.

Ich hoffe, das das jetzt etwas klarer für dich geworden ist. Wenn du noch Fragen hast - immer her damit.

Andreas
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
GrubenPete

Registriert seit: 11. Apr 2006
Ort: Altenburg
8 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: [Andorra2D] 2 AdDraws, nur eins wird gezeichnet

  Alt 11. Mär 2008, 22:29
Steh grad irgendwie völlig aufm Schlauch. sorry^^

Delphi-Quellcode:
procedure THauptMenu.FormCreate(Sender: TObject);
begin

  myAdDraw := TAdDraw.Create(self);
  myAdDraw.DllName := 'AndorraOGL.dll';

  myAdDraw.Display.Width := HauptMenu.Width;
  myAdDraw.Display.Height := HauptMenu.Height;

  if myAdDraw.Initialize then
    begin
      MainGui := TAdGui.Create(myAdDraw);
      MainGui.Skin.LoadFromFile('sunna.axs');
      MainGui.Cursors.LoadFromFile('cursors.xml');
      MainGui.LoadFromFile('mainmenu.axg');

      // Hab so versucht ein WindowFramework zu erstellen:
      wfw := TAdWindowFramework.Create;
      wfw.BindTo(@self); // --> Abstrakter Fehler

      MainConnector := TAdGUIConnector.Create(MainGui);
      MainConnector.ConnectEventHandlers(wfw); //Früher war das 'self' also mein Formular

      TAdButton(MainGUI.FindComponent('exit_game')).OnClick := AdButtonClick;
      TAdButton(MainGUI.FindComponent('start_game')).OnClick := AdButtonClick;
    end
  else
    showmessage('Fehler');
end;
Kannst du mir sagen, was ich ändern muss, um das zum laufen zu bringen ?
Sascha
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz