Das Programm soll 36 Sprites zeichnen, wobei sich der Inhalt der Sprites andauernd ändern kann, die Koordinaten etc werden in nem array gespeichert, sowie die Spritenummern. (Am besten mal den Code anschauen). In einem Ordner \pics befindet sich die Datei 0.jpg.
Code: Alles auswählen
;/sprite_array(x,0) = Spritenummer
;/sprite_array(x,1) = X-coor.
;/sprite_array(x,2) = Y-coor.
;/sprite_array(x,3) = bild Nr.
;/sprite_array(x,4) = Sprite3DNummer
InitSprite()
InitSprite3D()
Enumeration
#image0
#Window_Main
EndEnumeration
Global Dim sprite_array.l(37,5)
;{ Fenster erstellen
;-Fenster erstellen
Image0 = CatchImage(#image0, ?Image0)
DataSection
Image0:
IncludeBinary "background.jpg"
EndDataSection
OpenWindow(#Window_Main, 0, 0, 800, 600, "...", #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered| #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#Window_Main), 0, 0, 590, 570, 0, 0, 0)
ClearScreen(RGB(255, 255, 255))
For i = 1 To 36
sprite_array(i,0) = i
sprite_array(i,3) = 0
sprite_array(i,4) = 0
sprite_array(i,5) = 0
Next
Global Dim arrays(filereadin_counter, 1)
For i = 0 To filereadin_counter
arrays(i, 0) = i
arrays(i, 1) = i
LoadSprite(arrays(i, 0), "pics\" + Str(i) + ".jpg", #PB_Sprite_Texture)
CreateSprite3D(arrays(i, 1), arrays(i,0))
Next
LoadSprite(filereadin_counter+1, "background.jpg")
sprite_array(1,1)=100
sprite_array(1,2)=100
sprite_array(2,1)=200
sprite_array(2,2)=200
;- ..... ausgelassen
sprite_array(36,1) = 0
sprite_array(36,2) = 0
;}
Procedure redraw()
ClearScreen(RGB(0,0,0))
DisplaySprite(filereadin_counter+1,0,0)
Start3D()
For i = 1 To 36
If i => 13 And i <= 18
DisplaySprite3D(arrays(sprite_array(i,3),1), sprite_array(i,1),sprite_array(i,2))
Else
DisplaySprite(arrays(sprite_array(i,3),0), sprite_array(i,1), sprite_array(i,2))
EndIf
Debug sprite_array(i,3)
Next
Stop3D()
FlipBuffers()
EndProcedure
Repeat
EventID = WaitWindowEvent()
redraw()
Until EventID=#PB_Event_CloseWindow
Es geht darum, dass das Prog nicht mehr auf Befehle reagiert, solange es in der Schleife ist (dabei ist das hier schon stark entschlackt!).
Wenn ich es in einen Thread oder eine endlosschleife packe, wird die CPU auslastung enorm, bzw das Bild zieht schlieren.
Mache ich was grundelegendes falsch? ich kann mir nicht vorstellen, dass 36 sprites zuviele sind....
Schonmal danke im Vorraus
