Textgadget flackert

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Textgadget flackert

Beitrag von True29 »

Hi grüßt euch ,
Ich benutze ein Textgadget um einen Punktestand anzuzeigen.
Diese wird auf eine Grafik gesetzt.
Nun kommt es leider bei dem Flipbuffer zum flackern :/

so ungefähr ist der Grundaufbau von der Punkteanzeige einfacherhalber habe ich den Code gekürzt ich hoffe es ist ok.
Vor dem Textgadget hatte ich es mit Drawtext gelöst jedoch kommt es so zu komischen anzeigen wenn er z.b den Punktestand hochzählt.

So hier der Code ich hoffe nun einfach mal das wer einen Vorschlag hat ;)

Code: Alles auswählen

EnableExplicit
Global Ereignis,Punkte.i

If OpenWindow(0, 0, 0, 1500, 870,"test",0)
  If InitSprite()
    If OpenWindowedScreen(WindowID(0), 0, 0, 1500, 870, 0, 0, 0)
      
      TextGadget(7,180,820,100,20,str(Punkte))
      SetGadgetColor(7, #PB_Gadget_FrontColor , RGB(109,230,251))
      SetGadgetColor(7, #PB_Gadget_BackColor, $000000)        

      CreateSprite(1,1500,870)       
      StartDrawing(SpriteOutput(1))      
      StopDrawing()

      Repeat

        ClearScreen(RGB(0, 0, 0))
        DisplaySprite(1,0,0)      

        Punkte+10
        SetGadgetText(7,Str(Punkte))
       
        FlipBuffers()
        Delay(10)
      Until Ereignis = #PB_Event_CloseWindow
    EndIf
  EndIf
EndIf
Gruß ;)
i7,12gb ram , Windows 10 ,Purebasic 5.50
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Textgadget flackert

Beitrag von STARGÅTE »

Dieser Codeaufbau ist leider falsch!
Gadgets sind nicht dafür geeignet auf einem Screen gezeichnet zu werden, das Funktioniert nicht.
Desweiteren öffnest du ein Fenster, benutzt aber nirgendwo ein WindowEvent() um Ereignisse zu verwalten, obwohl du unten "Ereignis" abfragst.

Du musst dich jetzt entscheiden:
  • Du kannst weiterhin das TextGadget nutzen, musst es aber außerhalb des Screens platzieren und eine vernünftige Ereignisschleife bauen. Beispiel dazu findest du in der Hilfe unter OpenWindowedScreen()
  • Du nimmst doch das "passendere", nämlich DrawText:

    Code: Alles auswählen

    EnableExplicit
    
    InitSprite()
    
    Global Ereignis, Punkte.i
    
    OpenWindow(0, 0, 0, 1500, 870,"test",0)
    OpenWindowedScreen(WindowID(0), 0, 0, 1500, 870, 0, 0, 0)
    
    Repeat
    	
    	Repeat
    		
    		Select WindowEvent()
    			Case #PB_Event_CloseWindow
    				End
    			Case #PB_Event_None
    				Break
    		EndSelect
    		
    	ForEver
    	
    	ClearScreen($000000)
    	
    	Punkte+10
    	If StartDrawing(ScreenOutput())
    		DrawingMode(#PB_2DDrawing_Transparent)
    		DrawText(180, 820, Str(Punkte), $FFFFFF)
    		StopDrawing()
    	EndIf
    	
    	FlipBuffers()
    	
    ForEver
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Textgadget flackert

Beitrag von True29 »

hm ok danke Stargate für deine Hilfe.
Werde dann testen ob der Fehler weg ist ;)

Schönen abend.
i7,12gb ram , Windows 10 ,Purebasic 5.50
Antworten