Aktuelle Zeit: 10.06.2025, 09:04

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Mausklick abfragen...
BeitragVerfasst: 14.08.2008, 17:57 
Offline

Registriert: 11.08.2008, 22:14
Beiträge: 17
Wäre nett wenn mir wer erzählen könnte wie ich mit dem EventManager gescheit einen Mausklick abfrage. So wie ich es immer mache funktioniert es entweder gar nicht oder das Event wird durch Links- sowie Rechtsklick ausgelöst.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mausklick abfragen...
BeitragVerfasst: 14.08.2008, 18:38 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Du kannst in der Event-Variable, die du bekommst, zwischen den verschiedenen Tasten unterscheiden, das gibt unterschiedliche Events (zumindest normalerweise).

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mausklick abfragen...
BeitragVerfasst: 14.08.2008, 19:12 
Offline

Registriert: 11.08.2008, 22:14
Beiträge: 17
Danke dir, jetzt funktionierts..
Bin da falsch herangegangen^^


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mausklick abfragen...
BeitragVerfasst: 31.08.2008, 16:43 
Offline

Registriert: 31.07.2008, 22:49
Beiträge: 13
Im EventReceiver:
Code:
#pragma once
#include <irrlicht.h> 
#include "Globals.h"
using namespace irr; using namespace core; using namespace scene;
using namespace video; using namespace io; using namespace gui;


// Event Handler
class MyEventReceiver : public IEventReceiver
{
   public:
    virtual bool OnEvent(const SEvent& event)
      {
        if (event.EventType == EET_KEY_INPUT_EVENT)
            KeyIsDown[event.KeyInput.Key] = event.KeyInput.PressedDown;
            if (event.EventType == EET_MOUSE_INPUT_EVENT)
              MouseEvent = FetchMouseInput(event);
            if (event.EventType == EET_GUI_EVENT)
            {
            s32 id = event.GUIEvent.Caller->getID();
            IGUIEnvironment* guienv = device->getGUIEnvironment();
            switch(event.GUIEvent.EventType)
            {
               case EGET_BUTTON_CLICKED:
                  pMenu->setActive(false);
                  if (id == 101)
                  {
                     //..
                     return true;
                  }
                     
               break;
              default:
               break;
            }
         }
         return false;
      }
      
      SEvent::SMouseInput GetMouseInput(){return MouseEvent;}
      virtual bool IsKeyDown(EKEY_CODE keyCode) const {return KeyIsDown[keyCode];}
      MyEventReceiver(){for(u32 i=0; i<KEY_KEY_CODES_COUNT; ++i) KeyIsDown[i] = false;}
 
  private:
    bool KeyIsDown[KEY_KEY_CODES_COUNT];
      SEvent::SMouseInput FetchMouseInput(const SEvent& event){return event.MouseInput;}
    SEvent::SMouseInput MouseEvent;
};

später im Hauptprogramm:
Code:
while(device->run())
{
  if(device->isWindowActive())
  {   
   // keys W A S D pressed?
   if (receiver.IsKeyDown(KEY_KEY_W)){/**/}            
   if (receiver.IsKeyDown(KEY_KEY_S)){/**/}            
   if (receiver.IsKeyDown(KEY_KEY_A)){/**/}          
   if (receiver.IsKeyDown(KEY_KEY_D)){/**/}

   // keys 1...9 pressed?
   if (receiver.IsKeyDown(KEY_KEY_1)){/*...*/}            
   //...      
   // mouse input
   SEvent::SMouseInput emi = receiver.GetMouseInput();
   // LEFTMOUSE
   
   if (emi.Event == EMIE_LMOUSE_PRESSED_DOWN && ... )             
        {
         //...
        }
        //...
        // RIGHTMOUSE
        if (emi.Event == EMIE_RMOUSE_PRESSED_DOWN)
   { ...

_________________
http://www.henkessoft.de C++/WinAPI/MFC-Tutorials


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de