Pure Basic FPS
Posted: Sun Oct 13, 2019 10:36 am
Hi this may seem like a stupid question but how do you change the fps in pure basic .
Code: Select all
Procedure FrameDelay(Frames)
Static last_time
Protected time, max_time, diff_time
max_time = 1000 / Frames
time = ElapsedMilliseconds()
diff_time = max_time - time + last_time - 1
last_time = time
If diff_time > 0 And diff_time <= max_time
Delay(diff_time)
EndIf
EndProcedure
If InitSprite() = 0
MessageRequester("Error", "Can't open screen & sprite environment!", 0)
End
EndIf
If OpenWindow(0, 0, 0, 220, 160, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0, 170, 135, 45, 20, "Quit")
If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160)
;If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160, 0, 0, 0, #PB_Screen_NoSynchronization)
CreateSprite(0, 20, 20)
If StartDrawing(SpriteOutput(0))
Box(0, 0, 20, 20, RGB(255, 0, 155))
Box(5, 5, 10, 10, RGB(155, 0, 255))
StopDrawing()
EndIf
Else
MessageRequester("Error", "Can't open windowed screen!", 0)
End
EndIf
EndIf
;SetFrameRate(30)
direction = 2
Repeat
; It's very important to process all the events remaining in the queue at each frame
;
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_Gadget
If EventGadget() = 0
End
EndIf
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
DisplaySprite(0, x, x)
x + direction
If x > 140 : direction = -2 : EndIf
If x < 0 : direction = 2 : EndIf
FrameDelay(20)
ForEver