Page 1 sur 1

[Resolu] Problème de sprites!

Publié : mar. 15/déc./2009 17:41
par MLD
Bonjours a tous

N'étant pas familiarisé avec les sprites, j'ai un petit problème. :cry:
Je voudrai faire clignoter l'inscription Mm3j en la faisant passer de la couleur verte au jaune.
Voici le code. Ou est le problème??
Merci d'avance
Michel

Code : Tout sélectionner

Enumeration
#Fenpr = 1

EndEnumeration
Resultat = InitSprite()
Global FontID1
FontID1 = LoadFont(1, "Courier New",8 ,#PB_Font_HighQuality)
FontID2 = LoadFont(2, "Courier New",9 ,#PB_Font_HighQuality)

Global coulmm3
coulmm3 = $21FF0D 


#width = 700
#height = 500 
    OpenWindow(#Fenpr, 0, 0, #width, #height, "Variation ", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    ContainerGadget(5,98, 28, 504, 404 ,#PB_Container_Double)
    Handle = WindowID (#Fenpr) ;Handle de la fenêtre  
       
    OpenWindowedScreen(WindowID(#Fenpr), 100, 30, #width-200, #height-100, 1, 100, 70)
    AddWindowTimer(#Fenpr, 1, 250)
    
    CreateSprite(1, #width, #height) ;grille 
    Gosub Sprite1
    CreateSprite(2, #width, 25) 
    Gosub Sprite2; inscriptions haut de grille
    CreateSprite(3, 45, 355)
    Gosub Sprite3 ;Echelle a gauche de la grille 
    CreateSprite(4, 45, 25)
    Gosub sprite4; Inscription a droite de la grille
    CreateSprite(5,#width , 25)
    Gosub sprite5; 1ere inscription sous la grille
   CreateSprite(6,#width , 25)
   Gosub sprite6;2em inscription sous la grille   
  
   
  Repeat 
  Event = WindowEvent()
     If Event = #PB_Event_Timer And EventTimer() = 1
        If coulmm3 = $21FF0D  
        coulmm3 = $FFFF
        Gosub sprite6
        Else 
        coulmm3 = $21FF0D 
        Gosub sprite6
      EndIf  
     EndIf
  Until event = #PB_Event_CloseWindow
  End
  
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Sous programmes ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
Sprite1: ; grille  
     ; on a donc largeur 500 hauteur 400
 If StartDrawing(SpriteOutput(1)) 
    For i = 0 To 16 
     LineXY(50 +(i *25) ,50-5,50 +i *25,350+5,$405020) ; lignes verticales
    Next i
    For i = 0 To 4 
     LineXY(50 +(i *100) ,50-5,50 +i *100,350+5,$405070) ; lignes verticales principales
    Next i
    For i = 1 To 29 
     LineXY(50,50+ (i*10),450,50+ (i*10),$404040) ; lignes secondaires hz en partant du haut
    Next i  
    For i = 0 To 6 
     LineXY(50-5,50+ (i*50),450+5,50+ (i*50),$405070) ; lignes principales hz
    Next i 
    LineXY(50-8,200,450+8,200,$AFAFAF) ; ligne hz centrale 
    StopDrawing()
 EndIf 
 DisplaySprite(1,0,0)          
Return

sprite2: ; inscriptions en haut de grille  
If StartDrawing(SpriteOutput(2)) 
  Resultat = DrawText (5, 5, "Titre:" ,$C0C000,$0)
  Resultat = DrawText (40 ,5, "XXXX" ,$FF00AA,$0)    
  Resultat = DrawText (180, 5, "Der fixing:" ,$C0C000,$0)
  Resultat = DrawText (248, 5, "120.62 le:11/12/2010",$FF00AA,$0)
  Resultat = DrawText (390, 5, "%P./C:" ,$C0C000,$0)
  Resultat = DrawText (440, 5, "+100%" ,$FF00AA,$0)
  StopDrawing () 
 EndIf     
 DisplaySprite(2,0,0)        
 Return
 
sprite3: ;Echelle a gauche de la grille 
If StartDrawing(SpriteOutput(3)) 
    Resultat = DrawText (15, 15, "+3%" ,$21FF0D,$0)
    Resultat = DrawText (15 ,65, "+2%" ,$21FF0D,$0)    
    Resultat = DrawText (15, 115, "+1%" ,$21FF0D,$0)
    DrawingFont(FontID1)
    Resultat = DrawText (1, 165, "20.33",$FFFFFF,$0)
    DrawingFont( #PB_Default )
    Resultat = DrawText (15,215, "-1%" ,$FF,$0)
    Resultat = DrawText (15, 265, "-2%" ,$FF,$0)
    Resultat = DrawText (15, 315, "-3%" ,$FF,$0)
   StopDrawing () 
  EndIf
DisplaySprite(3,0,26)      
Return

sprite4:; Inscription a droite de la grille
If StartDrawing(SpriteOutput(4)) 
     Resultat = DrawText (1,3, "P.A",$FFFFFF,$0)
   StopDrawing () 
EndIf     
DisplaySprite(4,460,187)       
Return

sprite5:; 1ere inscription sous la griile
If StartDrawing(SpriteOutput(5)) 
DrawingFont(FontID2)
   For i = 0 To 15 
    Resultat = DrawText (43 +(i *25) ,0,Str((15 -i)+1)+"B",$E3AA9A) 
   Next i
   Resultat = DrawText (443 ,0,"CJ",$8080FF)
   DrawingFont( #PB_Default ) 
  StopDrawing () 
EndIf     
DisplaySprite(5,0,356)     
Return 

sprite6:;2em inscription sous la grille 

If StartDrawing(SpriteOutput(6))  
     Resultat = DrawText (10, 0, "- Cours" ,$FFFFFF,$0)
     ;le problème *********************
     Resultat = DrawText (80 ,0, "- Mm3J" ,coulmm3,$0) ; $21FF0D  
     
     Resultat = DrawText (160, 0, "-Mm5j" ,$FF00AA,$0)
     Resultat = DrawText (230,0, "- Stop",$FF,$0)
     Resultat = DrawText (295,0, "- Frais" ,$0E8BF1,$0)
     Resultat = DrawText (365,0, "- Cible1" ,$E3F11C,$0)
     Resultat = DrawText (440,0, "- Cible2" ,$F87507,$0)
    StopDrawing () 
EndIf     
DisplaySprite(6,0,380)   
Return

Re: Problème de sprites!

Publié : dim. 20/déc./2009 11:08
par cederavic
Rajoute simplement un FlipBuffers() après DisplaySprite(6,0,380) ligne 136.
La couleur ne changeait pas car tu l'écran n'était pas "rafraichit"... Après chaque opération de dessin dans un écran (openscreen / openwindowedscreen) il faut utiliser FlipBuffers() pour voir le résultat 8)

Re: Problème de sprites!

Publié : dim. 20/déc./2009 15:50
par MLD
Merci CEDERAVIC :D
Ce n'est pas évident en lisant la doc PB. :(
Bon WE
Michel

Re: [Resolu] Problème de sprites!

Publié : mar. 22/déc./2009 12:33
par Geo Trouvpatou
Salut.

Bizarre chez moi avec la 4.40 rien ne clignote.

Re: [Resolu] Problème de sprites!

Publié : mar. 22/déc./2009 13:29
par Cool Dji
Hello,

Chez moi avec la 4.40 et le flipbuffer(), mn3J clignote.

Re: [Resolu] Problème de sprites!

Publié : mar. 22/déc./2009 17:18
par Geo Trouvpatou
Erreur de ma part, j'avais mal lu.
Je croyais qu'il fallait ajouter "DisplaySprite(6,0,380)"
Et donc en regardant le code de MLD la ligne était bien présente.
C'est en relisant un peu mieux le post de cederavic que j'ai vu qu'il fallait ajouter un FlipBuffers().

MLD aurait dû corriger son 1er post avec le code mis à jour.

Sinon maintenant tout fonctionne.