Need help here
BlitzMax Forums/BlitzMax Beginners Area/Need help here| 
 | ||
| Here my problem I want each 3 second to call my function but something wrong because it goes to another loop for the event, event if I put my IF into the second loop it's not working if someone can help my out understanding this issue thanks. 
SuperStrict
Import maxgui.drivers
Local MyWindow:TGadget=CreateWindow("test", 200,200,320,240)
Local update:Int = MilliSecs()
Repeat
	If MilliSecs() > update+3000 Then
		myfunction()
		update = MilliSecs()
	End If
 	While WaitEvent()
	  Select EventID()
		  Case EVENT_WINDOWCLOSE
		     End
		  Case EVENT_MOUSEDOWN
	  End Select
	Wend
Forever
Function myfunction()
	Print "each 3 second"
End Function
 | 
| 
 | ||
| Your program is using an event loop (calling WaitEvent). This means it is well behaved and spends most of its time asleep inside the WaitEvent command. You should use CreateTimer and EVENT_TIMERTICK to do what you are trying to do. If you want your program to busy loop (use 100% CPU) so you can check the MilliSecs() function repeatedly you will need to change the While WaitEvent...Wend loop to If PollEvent...EndIf. Last edited 2011 | 
| 
 | ||
| http://www.blitzbasic.com/codearcs/codearcs.php?code=1721 | 
| 
 | ||
| SuperStrict
Import maxgui.drivers
Local MyWindow:TGadget=CreateWindow("test", 200,200,320,240)
Local update:Int = MilliSecs()
CreateTimer 60
While WaitEvent()
   Select EventID()
   	Case EVENT_TIMERTICK
   		If MilliSecs() > update+3000 Then
   			myfunction()
	   		update = MilliSecs()
   		End If
	  Case EVENT_WINDOWCLOSE
		     End
	  Case EVENT_MOUSEDOWN
  End Select
Wend
....		
 | 
| 
 | ||
| thanks guys, work pretty well |