Petit code pour des images non packés. Libre à toi de décompresser les images dans un dossier (ici Assets) puis une fois les images dans un tableau, de supprimer ces images du disque.
■ La procédure GamePreload() Charge les images se trouvant dans un dossier (
ici le dossier assets) sous la forme d'un tableau d'identifiant (
Dim Images(0)).
■ La procédure GameUpdate() se charge d'afficher chaque image de ce tableau en tenant compte d'un intervalle de temps en milliseconde entre chaque image (
FrameRate). Chaque image sera centrée horizontalement et verticalement.
Code : Tout sélectionner
Enumeration Window
#MainForm
EndEnumeration
Enumeration Sprite
#Image
EndEnumeration
Enumeration Files
#Directory
EndEnumeration
Global Dim Images(0), Index=0
Global FrameTimeLife, FrameRate = 1000
Procedure GamePreload()
Protected Directory.s = "assets"
UseJPEGImageDecoder()
UsePNGImageDecoder()
If ExamineDirectory(#Directory, Directory, "*.*")
While NextDirectoryEntry(#Directory)
If DirectoryEntryType(#Directory) = #PB_DirectoryEntry_File
Images(Index) = LoadImage(#PB_Any, Directory +"/"+ DirectoryEntryName(#Directory))
Index+1
ReDim Images(Index)
EndIf
Wend
FinishDirectory(#Directory)
EndIf
CreateSprite(#Image, ScreenWidth(), ScreenHeight())
EndProcedure
Procedure GameUpdate()
If ElapsedMilliseconds() - FrameTimeLife > FrameRate
FrameTimeLife = ElapsedMilliseconds()
Index + 1
If Index > ArraySize(Images())-1
Index = 0
EndIf
EndIf
StartDrawing(SpriteOutput(#Image))
Box(0, 0, ScreenWidth(), ScreenHeight(), RGB(128, 128, 128)) ;Background avant affichage
DrawImage(ImageID(Images(Index)), (ScreenWidth()-ImageWidth(Images(Index)))/2, (ScreenHeight()-ImageHeight(Images(Index)))/2) ;Centrage de l'image
StopDrawing()
DisplaySprite(#Image, 0, 0)
Delay(100)
EndProcedure
Procedure GameStart(Width=800, Height = 600)
;Initialisation de l'environnement 2D
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 And InitSound() = 0
MessageRequester("Error", "Sprite system can't be initialized", 0)
End
EndIf
If OpenWindow(#mainform, 0, 0, Width, Height, "Diaporama", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If OpenWindowedScreen(WindowID(#mainform), 0, 0, Width, Height)
GamePreload()
EndIf
EndIf
Repeat
Repeat
Event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
End
EndSelect
Until event=0
FlipBuffers()
ClearScreen(RGB(0,0,0))
ExamineKeyboard()
;ExamineMouse()
GameUpdate()
Until KeyboardPushed(#PB_Key_Escape)
EndProcedure
GameStart(580, 387)
diaporama.zip (Images plus code)