2d Blitz in Max Gui ?

BlitzMax Forums/BlitzMax Beginners Area/2d Blitz in Max Gui ?

SpaceTime(Posted 2007) [#1]
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


Brucey(Posted 2007) [#2]
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.


Brucey(Posted 2007) [#3]
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 :-)


mothmanbr(Posted 2007) [#4]
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.


ImaginaryHuman(Posted 2007) [#5]
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.