2d Blitz in Max Gui ?
BlitzMax Forums/BlitzMax Beginners Area/2d Blitz in Max Gui ?
| ||
I'm trying to create a simple program that I can use traditional 2d blitz with max GUI. But its not working out. for example, in my code I have... If KeyDown(Key_escape) Then End but nothing happens when I hit escape. So do if statments not work for canvasses? what exactly is happening here. What are the rules to using the canvas functions ? Below is a copy of the code. Strict Local MyWindow:Tgadget = CreateWindow("Canvas",200,200,800,600) Local MyCanvas:Tgadget = CreateCanvas(10,10,800,600, Mywindow) SetGraphics CanvasGraphics(MyCanvas) Repeat Cls If KeyDown(Key_escape) Then End PollEvent() Select EventID() Case event_windowclose End End Select Flip Forever |
| ||
How's about this :Strict Local MyWindow:Tgadget = CreateWindow("Canvas",200,200,800,600) Local MyCanvas:Tgadget = CreateCanvas(10,10,800,600, Mywindow) SetGraphics CanvasGraphics(MyCanvas) ActivateGadget(MyCanvas) ' enable the canvas gadget Repeat Cls PollEvent() Select EventID() Case EVENT_KEYDOWN ' check for "gui" key down events If EventData() = KEY_ESCAPE Then End Case event_windowclose End End Select Flip Forever See how the GUI handles the key events. |
| ||
You may want to run the canvas update off a timer instead.Strict Local MyWindow:Tgadget = CreateWindow("Canvas",200,200,800,600) Local MyCanvas:Tgadget = CreateCanvas(10,10,800,600, Mywindow) SetGraphics CanvasGraphics(MyCanvas) ActivateGadget(MyCanvas) ' enable the canvas gadget Local timer:TTimer = TTimer.Create(60) ' 60 FPS timer (or there abouts) Repeat WaitEvent() Select EventID() Case EVENT_TIMERTICK ' RedrawGadget(MyCanvas) Case EVENT_GADGETPAINT Cls ' draw stuff here Flip Case EVENT_KEYDOWN ' check for "gui" key down events If EventData() = KEY_ESCAPE Then End Case event_windowclose End End Select Flip Forever Your version sucks up 100% of my CPU time. This version appears to idle between 8 and 16% on my computer. Just a thought :-) |
| ||
Same thing happened to me when starting to use MaxGUI. The problem is the lack of the "WaitEvent" command, otherwise it'll just loop forever using up all your CPU. |
| ||
Or use EnablePolledInput() which will not tokenise/hilite in the IDE but will work to switch on normal keypresses if you dont want to use events. |