
j'ai conçu une barre de chargements qui affiche progressivement (selon les ressources chargés) des barres mais j'ai un problème pour régler parfaitement le nombres de barres dans le rectangle qui les contiennes suivant la progression... (c'est pas très clair jle sens... =)
Je calcule bien le nombres de barres à afficher pour une ressource chargé mais le problème étant que si cette valeur est inférieur à 1 je suis obligé de faire un faux calcul pour que les barres aillent jusqu'au bout du rectangle (et de ne pas les affichers si elles dépassent)
Voilà le code qui s'occupe d'afficher les barres + rectangle :
Code : Tout sélectionner
Procedure LoadingBar()
WBar = (ResolutionX-100) ; contient la largeur du rectangle de contenance suivant la résolution
HBar = 20 ; hauteur du rectangle de contenance
Decal = 2 ; où doit démarrer la première barre (donc 2 pixel après le début du rectangle)
WBarSize = WBar ; temporaire
XQuad = 2
QuadNbr = 0 ; contient le nombre de barres que peut contenir le rectangle
; calcul du nombre de barres qu'on peut contenir dans le rectangle
While XQuad < WBarSize
XQuad + 22
QuadNbr + 1
Wend
LastResourcesProgress = 0
; contient le nombre de barres à afficher pour 1 ressource chargé
BoxIncForOneResource.f = ResourcesNbr/QuadNbr
; affiche le rectangle de contenance + texte
If StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Outlined | #PB_2DDrawing_Transparent)
Box((ResolutionX/2)-(WBar/2), (ResolutionY/2)-(20/2), WBar, HBar, RGB(255,255,255))
DrawText((ResolutionX/2)-(WBar/2), ((ResolutionY/2)-(20/2))-TextHeight("L"), "Loading...", RGB(255,255,255))
StopDrawing()
Else
End
EndIf
Repeat
; affiche les barres suivant la progression du chargement
If ResourcesProgress <> LastResourcesProgress
FlipBuffers()
If StartDrawing(ScreenOutput())
; si le nombres de barres à afficher par ressources est inférieur à 1 on fait
; un petit faux calcul pour que les mini barres aillent quand même au bout :S
If BoxIncForOneResource < 1
For I = 0 To BoxIncForOneResource*ResourcesProgress
; on vérifie qu'on ne dépasse pas le rectangle
If ((ResolutionX/2)-(WBar/2))+Decal < WBar + 22
Box(((ResolutionX/2)-(WBar/2))+Decal, (ResolutionY/2)-(14/2), 20, 14, RGB(255,255,255))
Decal + 22
EndIf
Next
Else
For I = 0 To BoxIncForOneResource
; on vérifie qu'on ne dépasse pas le rectangle
If ((ResolutionX/2)-(WBar/2))+Decal < WBar + 22
Box(((ResolutionX/2)-(WBar/2))+Decal, (ResolutionY/2)-(14/2), 20, 14, RGB(255,255,255))
Decal + 22
EndIf
Next
EndIf
StopDrawing()
Else
End
EndIf
LastResourcesProgress = ResourcesProgress
EndIf
Until LoadingEnd = 1
EndProcedure
http://img136.imageshack.us/img136/2992 ... 303sz8.png
Pour les ressources c'est juste des fonctions qui englobe les LoadSprite etc et qui s'occupe la première fois de compter le nombres de ressources à charger sans les charger et ensuite de les charger en incrémentant la variable ResourcesProgress
C'est un petit problème de calcul mais bon là je vois pas...

Bon sinon c'est pas grave j'ajuste pour que les minis barres aillent jusqu'au bout et voilà \o/ mais bon niveau précision c'est pas le top...

Merci de m'aidez
