Seite 1 von 1

Textgadget flackert

Verfasst: 01.01.2013 23:50
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ß ;)

Re: Textgadget flackert

Verfasst: 02.01.2013 01:08
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

Re: Textgadget flackert

Verfasst: 02.01.2013 01:22
von True29
hm ok danke Stargate für deine Hilfe.
Werde dann testen ob der Fehler weg ist ;)

Schönen abend.