JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Menüklasse

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Gast









BeitragVerfasst am: 07.09.2002, 21:38    Titel: Menüklasse Antworten mit Zitat

Hi Leute,
also ich schreibe gerade eine Menüklasse, welche ein Menü auf Wunsch öffnet und die Daten der Maus empfängt. Nur ist das Problem, das ich ja nur Daten empfangen will, wenn das Menü auch offen ist. Wenn ich alles in eine Callbackfunktion schreibe (z.B. das Programm Schließen und dazu test auf übereinstimmung der Maus mit dem Button) dann wird diese ja auch während des Spieles ausgeführt und so kann es ja passieren, dass der Spieler irgendwo hinklickt, die Callbackfunktion diese Position als Button erkennt und es zu Fehlfunktionen kommt.
Kann man da vieleicht 2 Callbackfunktionen einfügen, sodass die eine dann in einer Unendlichschleife der Mainfunktion aufgerufen wird und die andere in einer Schleife der Menüklasse? Wenn ja, was muss ich da noch einfügen, damit die zweite Callbackfunktion auch aufgerufen wird.
Ich hoffe das hat jetzt irgendwer verstanden Very Happy

Danke Karl
Nach oben
DaN00b
JLI'ler



Anmeldedatum: 10.08.2002
Beiträge: 159

Medaillen: Keine

BeitragVerfasst am: 08.09.2002, 00:35    Titel: Antworten mit Zitat

versuchs doch mal mit directinput ist auch ne feine sache und recht einfach (und zuverlässiger net zu vergessen) Wink
_________________
Carpe Diem - Seize the day - Nütze den Tag!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 08.09.2002, 11:36    Titel: Antworten mit Zitat

hi
mach doch einfach eine variable, die den spielstatus speichert
also zum beispiel 1 für menü, 2 für spiel, 3 für credits
dann überprüfst du in der callbachfunk welcher status aktiv ist und führst die jeweiligen befehle aus

ps.ich kann nich groß schreiben, da mein handgelenk gebrochen ist
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 08.09.2002, 16:57    Titel: Antworten mit Zitat

ich habe auch eine menü klasse.
ich habe das dann teilweise so wie miracle boy gesagt hat gemacht.
ich habe es aber auch noch so gemacht, das jedes menü noch einen status hat, also ob es angezeigt werden soll oder nicht.
wenn es angezeigt wird, dann wird auch die update methode des menüs ausgeführt ansonsten nicht.
die update methode geht durch die menüitem liste und führt die update methode jedes einzelnen items durch. die items prüfen ob die maus auf dem item ist und gedrückt wurde. wenn ja, wird der status action vom item auf 1 gesetzt. die update methode des menüs prüft diesen wert und wenn der wert true also 1 ist, wird die action methode des menüs ausgeführt und ein zeiger auf das item mit übergeben. die action methode kann man dann für jede abgeleteite klasse(also für jedes menü) überschreiben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 08.09.2002, 16:57    Titel: Antworten mit Zitat

die action methode sieht für ein kleines menü dann so aus:

Code:

void CMain_Test::Action(CMenuItem *pItem)
{
switch(pItem->Classify())
{
case CLASS_MENU_BUTTON:
{
CButton *pBtn = dynamic_cast<CButton*>(pItem);

if(pBtn->IsClicked())
{
if(!pBtn->GetName().compare("Back"))
{
SetStatus(0);
MENULIST->ShowMenu("MainMenu");
}
}
}
break;
}// switch
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gast









BeitragVerfasst am: 08.09.2002, 20:25    Titel: Danke Antworten mit Zitat

Danke vielmals,
ich habe es jetzt mit dem Status gemacht. Noch eine Frage wegen des Codes:
Habe ich das richtig verstanden, die Zeile
Code:
CButton *pBtn = dynamic_cast<CButton*>(pItem);

wandelt den Zeiger pItem in den Typ CButton um. Wenn dem so ist, wie funktioniert das, muss dann die Klasse CMenuItem genauso wie CButton sei oder wie sonst werden die Werte übernommen?

cu Karl
Nach oben
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 09.09.2002, 11:56    Titel: Antworten mit Zitat

CButton ist von CMenuItem abgeleitet.

class CButton : public CMenuItem
{
.....
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum