Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Comportement de transition d'opacité (transparence)

Compatible Director. Cliquer pour en savoir plus sur les compatibilités.Par matse, le 13 octobre 2005

J'ai amélioré et commenté mon comportement de transition d'opacité pour l'occasion
n'hésitez pas à poster des remarques/commentaires pour l'améliorer

Le code est à placer en comportement sur n'importe quel type de sprite excepté ceux étant en “DirectToStage” comme les sprites d'acteurs 3D, vidéo et Flash sur lesquels ça n'aura pas d'effet à moins d'invalider le DirectToStage (case “DTS” dans l'inspecteur de propriétés).

--------------------------------------------- 
-- Simple Opacity Transition behavior 
-- by Mathieu Sénidre aka Matse 
-- matse@skwatt.com 
-- USE AND DISTRIBUTE FREELY 
--------------------------------------------- 
-- Comportement transition d'opacité simple 
-- par Mathieu Sénidre alias Matse 
-- matse@skwatt.com 
-- UTILISEZ ET DISTRIBUEZ LIBREMENT 
--------------------------------------------- 
 
property mySprite, pMode, pOpaUp, pLimUp, pOpaDown, pLimDown, pOpaSpeedUp, pOpaSpeedDown 
 
on getpropertydescriptionlist me
 props  = [:] 
 tListe = ["Directement", "Souris", "Externe"] 
 addprop props, #pMode, [#default:"Directement", #format:#symbol, #comment:"Mode de déclenchement de l'apparition"] 
 addprop props, #pLimUp, [#default:100, #format:#integer, #range:[#min:5, #max:100], #comment:"opacité maxi"]
 addprop props, #pLimDown, [#default:0, #format:#integer, #range:[#min:0, #max:90], #comment:"opacité mini"] 
 addprop props, #pOpaSpeedUp, [#default:5, #format:#integer, #range:[#min:1, #max:20], #comment:"vitesse d'apparition"]
 addprop props, #pOpaSpeedDown, [#default:5, #format:#integer, #range:[#min:1, #max:20], 
 #comment:"vitesse de disparition"] 
 
 return props
end 
 
on beginsprite me 
 
 mySprite = sprite(me.spritenum)
 mySprite.blend = pLimDown -- le sprite est à son minimum d'opacité au départ 
 
 case pMode of 
   "Directement" : pMode = #start    -- la transition commencera dès le début de la frame 
   "Souris"      : pMode = #mouse    -- la transition commencera lors du survol de la souris 
   "Externe"     : pMode = #external -- la transition est déclenchée par un autre script 
 end case   
 
 pOpaUp   = false 
 pOpaDown = false    
 
 if pMode = #start then -- si le déclenchement de la transition doit se faire dès le début de la frame 
   me.apparition() -- on lance l'apparition du sprite 
 end if
end 
 
on mouseenter me
 if pMode = #mouse then -- si le déclenchement de la transition se fait par survol de la souris
   me.apparition()  -- on lance l'apparition du sprite 
 end if 
end 
 
on mouseleave me
 if pMode = #mouse then -- si le déclenchement de la transition se fait par survol de la souris 
   me.disparition() -- on lance la disparition du sprite
 end if 
end 
 
on enterFrame me 
 
 -- APPARITION 
 if pOpaUp then -- si le sprite est en cours d'apparition
   if mySprite.blend < pLimUp then -- si le niveau d'opacité du sprite est inférieur au niveau maxi 
     reste = pLimUp - mySprite.blend -- on stocke la différence entre le niveau maxi et le niveau actuel 
     if reste >= pOpaSpeedUp then -- si la différence est supérieure à la vitesse à laquelle augmente l'opacité 
       mySprite.blend = mySprite.blend + pOpaSpeedUp -- on incrémente le niveau d'opacité de la vitesse définie
     else 
       mySprite.blend = pLimUp -- sinon on fixe le niveau d'opacité à son niveau maxi
       pOpaUp = false -- la transition d'apparition est terminée
     end if 
 
   else 
     pOpaUp = false -- la transition d'apparition est terminée 
   end if 
 end if 
 
  -- DISPARITION
 if pOpaDown then -- si le sprite est en cours de disparition 
   if mySprite.blend > pLimDown then -- si le niveau d'opacité du sprite est supérieur à son niveau mini 
     reste = mySprite.blend - pLimDown -- on stocke la différence entre le niveau actuel et le niveau mini 
     if reste >= pOpaSpeedDown then -- si la différence est supérieure à la vitesse à laquelle diminue l'opacité 
       mySprite.blend = mySprite.blend - pOpaSpeedDown -- on diminue le niveau d'opacité de la vitesse définie 
     else 
       mySprite.blend = mySprite.blend - reste -- sinon on fixe le niveau d'opacité à son niveau mini 
       pOpaDown = false -- la transition de disparition est terminée 
     end if 
   else 
     pOpaDown = false -- la transition de disparition est terminée 
   end if 
 end if 
end
 
on apparition me 
 pOpaUp   = true  -- délenche l'apparition du sprite
 pOpaDown = false -- au cas où le sprite soit encore en train de disparaître kan la souris le survole
end 
 
on disparition me 
 pOpaUp   = false -- au cas où le sprite soit encore en train d'apparaître kan la souris s'en va 
 pOpaDown = true  -- déclenche la disparition du sprite 
end

Tutorial by Matse