Page 1 sur 1

découpage de sprites à la volée

Publié : lun. 31/oct./2005 22:26
par Anonyme
Vous voulez découper une planche de sprites à la volée?
Voici une petite fonction qui pourrais vous être utile :

MultiGrabSprite(ImageFile$,TailleX.l,TailleY.l,IndexStart.l)
  • ImageFile$ Correspond au nom du bitmap à découper
    TailleX,TailleY Correspond à la taille du découpage
    IndexStart Numéro du premier sprite qui sera découper

Code : Tout sélectionner

Procedure MultiGrabSprite(ImageFile$,TailleX.l,TailleY.l,IndexStart.l)
  
Shared SpriteID.l

SpriteID = LoadSprite(#PB_Any,ImageFile$)
  
If SpriteID <> 0  

UseBuffer(SpriteID) 

For y = 0 To (SpriteHeight(SpriteID) / TailleX)-1
  For x = 0 To (SpriteWidth(SpriteID) / TailleY)-1
    GrabSprite(IndexStart, x*TailleX, y*TailleY, TailleX, TailleY)
     IndexStart=IndexStart + 1
       Next x 
         Next y 

FreeSprite(SpriteID) 
UseBuffer(-1) 

Else
  MessageRequester("Erreur","Fichier introuvable : " +ImageFile$)
EndIf

EndProcedure
Par exemple si vous avez une planche de sprite qui fait 192*192 et que à l'intérieur de cette planche de sprite vous avec 9 animations d'une Taille de 64*64 :

MultiGrabSprite("MonImage.bmp",64,64,100)
Le premier Numéro du sprite découper sera 100 le dernier sera 109 !

Voilà j'éspère qu'il sera utile pour les débutants :wink:

Publié : lun. 31/oct./2005 23:08
par Dr. Dri
c'est sympa comme tout ^^
juste une remarque :
si jamais un sprite numéro 0 existait bah hop ta fonction le supprime... utilise plutôt #PB_Any

Dri ;)

Publié : lun. 31/oct./2005 23:13
par Anonyme
C'est exact , bonne remarque.
Cette fonction c'est un peu la tienne ^^ elle m'a bien servi à mes debuts en prog sous db :wink: