Wie greife ich auf polledInput in der GUI zu?

Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials

Neue Antwort erstellen

 

klepto2

Betreff: Wie greife ich auf polledInput in der GUI zu?

BeitragMi, Jan 04, 2006 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Laut BRL geht das nur, wenn man die Events selbst abfängt wie hier:

Code: [AUSKLAPPEN]

' createcanvas.bmx

Strict

Global GAME_WIDTH=320
Global GAME_HEIGHT=240

' create a centered window with client size GAME_WIDTH,GAME_HEIGHT

Local wx=(GadgetWidth(Desktop())-GAME_WIDTH)/2
Local wy=(GadgetHeight(Desktop())-GAME_HEIGHT)/2

Local window:TGadget=CreateWindow("My Canvas",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS)

' create a canvas for our game

Local canvas:TGadget=CreateCanvas(0,0,320,240,window)

' create an update timer

CreateTimer 60

While WaitEvent()
   Select EventID()
      Case EVENT_TIMERTICK
         RedrawGadget canvas

      Case EVENT_GADGETPAINT
         SetGraphics CanvasGraphics(canvas)
         SetOrigin 160,120
         SetLineWidth 5
         Cls
         Local t=MilliSecs()
         DrawLine 0,0,120*Cos(t),120*Sin(t)
         DrawLine 0,0,80*Cos(t/60),80*Sin(t/60)
         Flip

      Case EVENT_MOUSEMOVE ' <--- Wie hier
         Print "MOVE!"

      Case EVENT_WINDOWCLOSE
         FreeGadget canvas
         End

      Case EVENT_APPTERMINATE
         End
   End Select
Wend


Es gibt allerdings einen undokumentierten Befehl, der das PolledInput System auch bei einem Canvas oder Panel aktiviert. Dieser heißt:

EnablePolledInput()

Im Prinzip macht das PolledInput system nichts anderes als die Events abzufangen, egal ob im Graphicsmode oder bei der GUI. Mit diesem Befehl hat man genauso Zugriff auf Befehle wie KeyHit, KeyDown oder MouseX als im NonGUI modus.

kleines Beispiel:
Code: [AUSKLAPPEN]


' createcanvas.bmx

Strict

Global GAME_WIDTH=320
Global GAME_HEIGHT=240

' create a centered window with client size GAME_WIDTH,GAME_HEIGHT

Local wx=(GadgetWidth(Desktop())-GAME_WIDTH)/2
Local wy=(GadgetHeight(Desktop())-GAME_HEIGHT)/2

Local window:TGadget=CreateWindow("My Canvas",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS)

' create a canvas for our game

Local canvas:TGadget=CreateCanvas(0,0,320,240,window)

' create an update timer

CreateTimer 60

EnablePolledInput() 'Enable the polled Input system

While WaitEvent()
   Select EventID()
      Case EVENT_TIMERTICK
         RedrawGadget canvas

      Case EVENT_GADGETPAINT
         SetGraphics CanvasGraphics(canvas)
         'SetOrigin 160,120
         SetLineWidth 5
         Cls
         DrawLine MouseX()+10,MouseY()+10,MouseX()-10,MouseY()-10
         DrawLine MouseX()+10,MouseY()-10,MouseX()-10,MouseY()+10
         
         DrawText "Press Escape to End the program",
         
         If KeyHit(KEY_ESCAPE) Then
            FreeGadget canvas
            End
         EndIf
         
         If MouseDown(1) Then DrawText "Button 1 pressed",0,20
         If MouseDown(2) Then DrawText "Button 2 pressed",160,20

         Flip

      Case EVENT_WINDOWCLOSE
         FreeGadget canvas
         End

      Case EVENT_APPTERMINATE
         End
   End Select
Wend
 



Damit ist es erheblich einfacher seinen bisherigen Code in eine Gui Umgebung zu portieren.
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

Hummelpups

BeitragFr, Jan 06, 2006 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
grr, das hätte ich früher gebrauchen können ^^
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group