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
EndProcedurehttp://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