Da das Laden von vielen Sprites etwas mehr Zeit in Anspruch nimmt, würde ich gerne einen Ladeanimation auf meinem Screen zeigen, während ich die Grafiken (Sprites) einlade.
Leider musste ich nun feststellen, dass sich mein Programm manchmal aufhängt, wenn ich (trotz ThreadSafe Aktivierung) LoadSprite in einem Thread benutze, während in der Hauptschleife der Screen aktualisiert wird (FlipBuffers usw.)
Ist die Sprite-Lib von PB nicht Threadsicher?
Code: Alles auswählen
InitSprite()
InitSprite3D()
Enumeration
	#Window
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "ScreenTitle", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)
UsePNGImageDecoder()
Procedure Test(A)
	For n = 1 To 50
		LoadSprite(n, "...") ; Hier bitte irgend ein großes Bild nehmen (zB 2560x1920px)
	Next
EndProcedure
Define Thread = CreateThread(@Test(), #Null)
Repeat
	
	Repeat
		
		Select WindowEvent()
			Case #PB_Event_CloseWindow
				End
			Case #Null
				Break
		EndSelect
		
	ForEver
	
	ClearScreen(0)
	
	StartDrawing(ScreenOutput())
		DrawText(0, 0, Str(ElapsedMilliseconds()))
		If IsThread(Thread)
			DrawText(0, 20, "Ladevorgang")
		Else
			DrawText(0, 20, "Fertig")
		EndIf
	StopDrawing()
	
	FlipBuffers()
	
ForEver
 
 