Wie greife ich auf polledInput in der GUI zu?
Übersicht

klepto2Betreff: Wie greife ich auf polledInput in der GUI zu? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
grr, das hätte ich früher gebrauchen können ^^ | ||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group