Zucken beim WindowedScreen
Verfasst: 08.10.2007 23:20
Moin.
Kann mir mal einer sagen wieso es bei dem folgenden Code bei den Bewegungen des Rasters (WASD-Tasten) immer (scheinbar alle 2 Teile) zu kurzen Zuckern kommt ?
Selbst wenn ich das Delay(5) auf 0 setze oder gar ganz rausnehme ändert das nüscht.
Auch nur ein simples WindowEvent(), also ohne vollständige Entleerung der Queue, bringt goa nix.
Im Fullscreen arbeitet das ganze wunderbar.
Hier der Code:
Kann mir mal einer sagen wieso es bei dem folgenden Code bei den Bewegungen des Rasters (WASD-Tasten) immer (scheinbar alle 2 Teile) zu kurzen Zuckern kommt ?
Selbst wenn ich das Delay(5) auf 0 setze oder gar ganz rausnehme ändert das nüscht.
Auch nur ein simples WindowEvent(), also ohne vollständige Entleerung der Queue, bringt goa nix.
Im Fullscreen arbeitet das ganze wunderbar.
Hier der Code:
Code: Alles auswählen
#Do_Full_Screen = 0
#MyColor = $00AABB
#MOVE_SPEED = 4
If InitSprite() = 0 Or InitKeyboard() = 0
End
EndIf
CompilerIf #Do_Full_Screen
If OpenScreen(1024, 768, 32, "Lag Test...") = 0
End
EndIf
CompilerElse
If OpenWindow(0, 0, 0, 1024, 768, "Lag Test...", #PB_Window_SystemMenu) = 0 Or OpenWindowedScreen(WindowID(0), 0, 0, 1024, 768, 0, 0, 0) = 0
End
EndIf
CompilerEndIf
CreateSprite(0, 128, 128)
If StartDrawing(SpriteOutput(0))
LineXY(0, 63, 63, 0, #MyColor)
LineXY(64, 0, 128, 63, #MyColor)
LineXY(128, 64, 64, 128, #MyColor)
LineXY(0, 64, 63, 128, #MyColor)
FillArea(64, 64, -1, #MyColor)
StopDrawing()
EndIf
Define.l PosX, PosY, x, y
Repeat
CompilerIf #Do_Full_Screen = 0
Repeat
Select WindowEvent()
Case 0
Delay(5)
Break
Case #PB_Event_CloseWindow
Break 2
EndSelect
ForEver
CompilerEndIf
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_D)
PosX + #MOVE_SPEED
EndIf
If KeyboardPushed(#PB_Key_A)
PosX - #MOVE_SPEED
EndIf
If KeyboardPushed(#PB_Key_S)
PosY + #MOVE_SPEED
EndIf
If KeyboardPushed(#PB_Key_W)
PosY - #MOVE_SPEED
EndIf
If KeyboardPushed(#PB_Key_Escape)
Break
EndIf
EndIf
ClearScreen(0)
For y = 0 To 20
For x = 0 To 20
DisplayTransparentSprite(0, PosX + x * 128, PosY + y * 128)
Next x
Next y
FlipBuffers()
ForEver