utilisation de zoomsprite

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

utilisation de zoomsprite

Message 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,
Avatar de l’utilisateur
raven
Messages : 222
Inscription : jeu. 06/janv./2005 15:45

Re: utilisation de zoomsprite

Message 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
Pb5.24 Lts/5.31 Windows 7 64 nvidia 560 ti E8500 8g ram
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: utilisation de zoomsprite

Message 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 !!
Avatar de l’utilisateur
raven
Messages : 222
Inscription : jeu. 06/janv./2005 15:45

Re: utilisation de zoomsprite

Message 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 :)
Pb5.24 Lts/5.31 Windows 7 64 nvidia 560 ti E8500 8g ram
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: utilisation de zoomsprite

Message 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)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
raven
Messages : 222
Inscription : jeu. 06/janv./2005 15:45

Re: utilisation de zoomsprite

Message par raven »

merci Falsam,intéressant comme code.
Pb5.24 Lts/5.31 Windows 7 64 nvidia 560 ti E8500 8g ram
Répondre