Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 16:24
Merci de ton aide ce que je veux faire c'est quand on crée une planche de sprites c'est de pouvoir les découpés et les afficher ensuite .
Forums PureBasic - Français
http://forums.purebasic.com/french/
Facile à faire pour toi mais pas pour moiAr-S a écrit :Tu copies 5 fois ton sprite (s'il contient 5 images par exemple)
Ensuite tu peux utiliser clipsprite() pour créer les 5 séparément et les faire apparaitres en même temps ou pas...
Code : Tout sélectionner
EnableExplicit
UsePNGImageDecoder()
InitSprite()
InitMouse()
InitKeyboard()
InitMovie()
Enumeration
#Main_Form
#Sprite1
#Sprite2
EndEnumeration
Global Event_Window,X,Y
OpenWindow(#Main_Form,0,0,800,600,"Test ClipSprite ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Main_Form),0,0,800,600)
;Chargement du Sprite Sheet pour le sprite 1 et 2
LoadSprite(#Sprite1, "test.png")
LoadSprite(#Sprite2, "test.png")
;Préparation du premier sprite
;Elle commence en x=0 y=0 avec une taille de 800 x 600
ClipSprite(#Sprite1, 0, 0, 800, 600)
;Création du deuxiéme sprite
;Elle commence en x=94 y=680 avec une taille de 222 x 195
ClipSprite(#Sprite2, 94, 680, 222, 195)
;La couleur de transparence pour ce 2eme sprite est le noir
TransparentSpriteColor(#Sprite2, RGB(0,0,0))
Repeat
Repeat
Event_Window=WindowEvent()
Select Event_Window
Case #PB_Event_CloseWindow
End
EndSelect
Until Event_Window=0
;Affichage du premier sprite
DisplaySprite(#Sprite1, 0, 0)
;Affichage du deuxiéme sprite
;Attention : On a défini le noir comme étant la couleur de transparence
DisplayTransparentSprite(#Sprite2, x, 0)
FlipBuffers()
;Defilement du sprite
x + 1
If x > ScreenWidth()
x = -222
EndIf
ClearScreen(RGB(0, 0, 0))
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
Code : Tout sélectionner
x + 1
If x > ScreenWidth()
x = -222
Code : Tout sélectionner
x + 1
If x > ScreenWidth()
x = -222
Code : Tout sélectionner
X + 1
Code : Tout sélectionner
If x > ScreenWidth()
Code : Tout sélectionner
x = -222
Code : Tout sélectionner
SpriteOn.b=#True ;Flag qui détermine si le sprite avance ou pas
ExamineKeyboard()
; Si presse la touche Espace arrête le sprite
If KeyboardPushed(#PB_Key_Space)
SpriteOn=#False
EndIf
; Si la touche Espace est relachée redémare le sprite
If KeyboardReleased(#PB_Key_Space)
SpriteOn=#True
EndIf
If SpiteOn
X+1
EndIf
Code : Tout sélectionner
If STOP = #False ; Le marqueur stop est à 0 donc ....
x+1 ; ... ton sprite avance de 1
If x = 380 ; s'il atteint 380
STOP = #True ; Le marqueur STOP passe à 1 donc ton sprite n'avancera plus
EndIf
EndIf