ich habe ein kleines Problem mit meinem Kartenspiel (mein erstes Projekt in PB).
Es handelt sich um einen WindowedScreen auf dem die gesamten
Grafikausgaben u.a. mit 2D und 3D Sprites ausgeführt werden.
Der Screen nimmt nicht die gesamte Fensterfläche ein, so daß
rechts vom Screen gleichzeitig noch Statistikausgaben in ein
EditGadget gemacht werden.
Dort rechts sind auch ein paar CheckBoxen, mit denen ich testweise
einige Programmfunktionen ein/ausschalte.
(Hier ist ein Screenshoot)
Der Mauszeiger wird innerhalb des Screenbereiches durch ein
Sprite dargestellt - der normale Mauszeiger ist in diesem Bereich
disabled.
Und zwar habe ich jetzt den Effekt, daß unter gewissen Umständen
dieser Sprite-Mousepointer sich sehr zähflüssig bewegt.
Normalerweise flutscht das wie verrückt, da ich den Screen aus
performancegründen auch nicht für jeden Framewechsel neu aufbaue.
Die Grafik wird nur generiert, wenn es wirklich nötig ist (z.B.
neue Karten auf den Tisch malen).
Danach wird der gesamte Screen in einem Sprite gesichert.
Mit diesem einen Sprite wird dann bei sekundären Grafikaktionen
(z.B. Mauszeiger neu zeichnen oder ne Anim zeichnen) der Hintergrund
mit einem DisplaySprite neu rekonstruiert.
Wenn ich jetzt die Exe starte und ein wenig mit den Klickern rechts
rumspiele und den Mousepointer dann wieder in den Screen ziehe, dann
kommt es ziemlich regelmäßig vor, daß mein Mousesprite den Bewegungen
meiner Maus nur noch im Zeitlupentempo folgt.
Ich vermute, daß ds was mit dem Messagesystem von Windows zu tun hat,
aber sicher bin ich mir nicht.
Der Eventloop sieht eigentlich auch ziemlich in Ornung aus.
Code: Alles auswählen
Event = WaitWindowEvent(5) ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
Select Event
Case #PB_Event_Menu
MenuID = EventMenu()
Select MenuID
Case #NEWGAME
Debug "GadgetID: #NEWGAME"
Case #MIXCARDS
Debug "GadgetID: #MIXCARDS"
Case #QUITGAME
Debug "GadgetID: #QUITGAME"
End
EndSelect
Case #PB_Event_Gadget
Select GadgetID
Case #Button_Test1
MixCards()
DrawTable()
Case #Button_Test2
DrawTable()
Case #CheckBox_0
DrawTable()
Case #CheckBox_1
DrawTable()
Case #CheckBox_2
DrawTable()
Case #CheckBox_3
If GetGadgetState(#CheckBox_3) ; Anim on / off
ActiveAnim = 1
ScreenRefresh = #True
Else
ActiveAnim = 0
ScreenRefresh = #True
EndIf
EndSelect
; Case #WM_MOUSEMOVE
; DrawGraphics()
EndSelect
DrawGraphics()
Until Event = #PB_Event_CloseWindow Or MenuID = #QUITGAME; End of the event loopmal den Source hingelegt und würde mich über Tipps
zur Lösung des Problems freuen.
Gruß Markus
