Page 1 sur 1

utilisation de zoomsprite

Publié : ven. 05/déc./2014 15:14
par jmg49
Bonjour,

j'utilise zoomsprite() sur une image, mais le résultat n'est pas ce que j'attendais, c'est à dire que je place une image au centre d'un écran avec displaysprite() et j'applique ensuite le zoomsprite,

ça ne fait pas un zoom "droit" , c'est à dire qu'une fois une certaine taille atteinte, l'image se barre sur le côté ,

pour que l'image occupe l'écran entier une fois zoomée, au départ je dois la placer en haut à gauche.....faut il utiliser autre chose que zoomsprite() ? camera ?

merci,

Re: utilisation de zoomsprite

Publié : ven. 05/déc./2014 15:38
par raven
bonjour jmp49,
un bout de code de ma demo:

Code : Tout sélectionner

  TransparentSpriteColor(#logo,#PB_Sprite_BlendSourceAlpha)
      ZoomSprite(#logo,zoomx,zoomx)
      DisplayTransparentSprite(#logo,500-zoomx/2,350-zoomx/2)
      If zoom = 0
         zoomx + 3.6
         If zoomx=>1000:zoom=1:EndIf
         Else
         zoomx - 3.6
         If zoomx<=850:zoom=0:EndIf
         
      EndIf

Re: utilisation de zoomsprite

Publié : ven. 05/déc./2014 15:47
par jmg49
c'est ce que tu as appliqué pour ton zoom sur le logo pure miga demo part 1 ?? c'est exactement cet effet que je recherche !

j'essaie et je te dis !

ta puremiga elle déchire tout ! pour ceux qui ont connu cette machine et ses jeux c'est un vrai bonheur de voir ces sprites et d'entendre le bruit du lecteur !!

Re: utilisation de zoomsprite

Publié : ven. 05/déc./2014 16:06
par raven
oui c'est une partie du code de pure miga part 1.

Code : Tout sélectionner

 If temp >=800 And temp <850
      TransparentSpriteColor(#guru,#PB_Sprite_BlendSourceAlpha)
      TransparentSpriteColor(#guru2,#PB_Sprite_BlendSourceAlpha)
      DisplayTransparentSprite(#guru,xguru+0, zoomx1)
      DisplayTransparentSprite(#guru2,xguru+0, zoomx1)
      ZoomSprite(#logo,zoomx1/2,zoomx1/2)
      
      
      If zoom1 = 0
         zoomx1 - 2.0
         If zoomx1=>150:zoom1=1:EndIf
         Else
         zoomx1 - 2.0
         If zoomx1<=0:zoom1=0:EndIf
      EndIf
   endif
   ;---------------------------------------------
   ;------ affiche logo pure miga  --------
   ;---------------------------------------------
   
   If temp >=850 And temp <1800
      
      TransparentSpriteColor(#logo,#PB_Sprite_BlendSourceAlpha)
      ZoomSprite(#logo,zoomx,zoomx)
      
      DisplayTransparentSprite(#logo,500-zoomx/2,350-zoomx/2)
      If zoom = 0
         zoomx + 3.0
         If zoomx=>750:zoom=1:EndIf
         Else
         zoomx - 3.0
         If zoomx<=650:zoom=0:EndIf
      EndIf
   EndIf
   If temp >=1800 And temp <2000
      
      TransparentSpriteColor(#logo,#PB_Sprite_BlendSourceAlpha)
      ZoomSprite(#logo,zoomx,zoomx)
      
      DisplayTransparentSprite(#logo,500-zoomx/2,350-zoomx/2)
      If zoom = 0
         zoomx + 3.0
         If zoomx=>750:zoom=1:EndIf
         Else
         zoomx - 3.0
         If zoomx<=0:zoom=0:EndIf
      EndIf
      
   endif
il doit avoir une meilleur façon de faire :)

Re: utilisation de zoomsprite

Publié : ven. 05/déc./2014 19:22
par falsam
Un exemple de zoom avec un point d'ancrage central du sprite

Code : Tout sélectionner

Enumeration
  #MainForm
  #Sprite
EndEnumeration

Global Event, Increment = 1

Procedure GamePreload()  
  LoadSprite(#Sprite, #PB_Compiler_Home+"Examples\3D\Data\Textures\Geebee2.bmp")
  TransparentSpriteColor(#Sprite, RGB(255,0,255)) ;Quel est la couleur de transparence  
EndProcedure

Procedure GameUpdate()
  Protected w.f = SpriteWidth(#Sprite)
  Protected h.f = SpriteHeight(#Sprite)
  
  ;Point d'ancrage central
  Protected x.f = (ScreenWidth() - w)/2 
  Protected y.f = (ScreenHeight() - h)/2
 
  DisplayTransparentSprite(#Sprite, x, y)
 
  ZoomSprite(#Sprite, w + Increment, h + Increment)
  
  If w >= 800 : Increment = -1 : EndIf 
  If w <= 128 : Increment = 1 : EndIf 
  
EndProcedure

Procedure GameStart()
 
  ;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, 800, 600, "New Game", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    If OpenWindowedScreen(WindowID(#mainform), 0, 0, 800, 600)
      GamePreload()
    EndIf
  EndIf
  
  ;-Boucle evenementielle
  Repeat  
    Repeat
      Event = WindowEvent()
     
      Select event    
        Case #PB_Event_CloseWindow
          End
      EndSelect  
    Until event=0
    
    FlipBuffers()
    ClearScreen(RGB(245, 222, 179))
                
    ExamineKeyboard()
    ExamineMouse()
    GameUpdate()
  
  Until KeyboardPushed(#PB_Key_Escape)
EndProcedure

GameStart()
le sprite est celui se trouvant dans les exemples de pure basic (Pas très beau)

Re: utilisation de zoomsprite

Publié : lun. 08/déc./2014 15:18
par raven
merci Falsam,intéressant comme code.