15/03/2012

Flex 4.6 : masquer une image ou une video avec un masque

On peut  des masques à tout les éléments d'un groupe.
Un masque définit la région dans laquelle le contenu du groupe est rendu.
Il existe deux types de masquage: clipping et l'alpha.

- le masque de type 'clipping' : la couche alpha n'est pas gérée.
- le masque de type 'alpha': la couche alpha est gérée

1. On crée le groupe qui va contenir le masque et l'objet à masquer
2. On lui donne un maskType alpha ou clipping
3. On crée la balise mask dans laquelle on insèrera l'objet qui servira de masque (ici, une image)
4. On crée l'objet à masquer (ici, une video)
..et roule ma poule :)

<s:Group maskType="alpha">
  <s:mask>
    <s:Group>
    <s:Image source="@Embed('monMasque.png')" />
    </s:Group>
  </s:mask>
  <s:VideoPlayer source="maVideo.flv" />
</s:Group>

23/12/2011

Changement de state à la fin d'un effet

Je ne sais pas si c'est la manière la plus propre de  le faire, mais ça à le mérite de fonctionner :)
Voici le topo : Plusieurs boutons sur la page devant jouer les mêmes effets mais devant rediriger vers un state différent quand la séquence d'effets est terminée.

1. Déclaration de ma séquence d'effets entre les balises 'declaration'
effectEnd >> lance un évènement quand l'effet est terminé
maredirection >> est la fonction qui est appelée en fin d'effet
versMaPage >> une variable qui va être remplacé par le nom du state vers lequel on va être redirigé
<fx:Declarations>
   <s:Sequence id="monFondu"> // je nomme ma séquence
      <s:Move target="{macible}"/>
      <s:Fade alphaFrom="1" alphaTo="0" target="{macible}"
              effectEnd="maredirection(versMaPage)"/>
   </s:Sequence>
</fx:Declarations>
2. Déclaration des fonctions jouant l'effet et redirigeant vers un autre state
Lors du clic sur le bouton, la fonction 'versOu' va être appelé et  l'effet 'monFondu' va être joué. C'est sur ce bouton que l'on va renseigner la variable 'nomDuState'. Pour ne pas perdre sa valeur lors de l'appel de la fonction 'maredirection', je crée une nouvelle variable 'versMaPage' qui va la stocker.
La fonction 'maredirection' recupere cette variable et s'en sert dans le currentState pour la redirection.


<fx:Script>
  <![CDATA[
     public var versMaPage:String ;
     public function versOu(nomDuState:String):void {
            monFondu.play();
            versMaPage = nomDuState;
            }
     public function maredirection(versMaPage:String):void {
            currentState=versMaPage;
            }
  ]]> 
</fx:Script>
3. Déclenchement sur les boutons
Supposons que nous avons créé 2 states : page1 et page2
Click appelle la fonction 'versOu' et la variable 'nomDuState' est renseignée en indiquant le nom du state de destination
<s:Button label="vers la page1"  click="versOu('page1')"/>
<s:Button label="vers la page2"  click="versOu('page2')"/>