2010-06-24 2 views
0

J'ai un dropfilter défini en utilisant des variables pouvant être liées en tant que paramètres.Un DropShadowFilter est-il modifiable dans Flex 3.5?

<mx:filters> 
    <mx:DropShadowFilter id="torinofilter" distance="0" color="{dropShadowColor}" 
    blurX="{dropBlur}" blurY="{dropBlur}" strength="8" quality="2" 
    alpha="{dropAlpha}"/> 
</mx:filters> 

Je voudrais mettre à jour le filtre dans un appel de méthode comme ceci:

this.dropShadowColor = <new color> 
this.dropBlur = 15.0; 
this.dropAlpha = 0.8; 

Sur le suivi à la fois this.dropShadowColor et torinofilter.color, je vois qu'ils ont mis à jour à la nouvelle couleur, mais la couleur de la dropfilter ne change pas.

Je préférerais ne pas créer un nouveau filtre car je rencontre des problèmes avec swapChildren.

Répondre

0

Les propriétés de filters ne peuvent pas être modifiées comme ceci.

Pour modifier un objet filtre, vous devez utiliser la technique de modification d'une copie du tableau de filtres:

  1. affecter la valeur du tableau filters à un tableau temporaire, comme un nom myFilters .
  2. Modifiez la propriété en utilisant la matrice temporaire, myFilters. Par exemple, pour définir la propriété de qualité du premier filtre dans le tableau, vous pouvez utiliser le code suivant: myFilters[0].quality = 1;
  3. Affectez la valeur du tableau temporaire au tableau filters.

Fondamentalement, lorsque vous lisez tableau filters d'un DisplayObject, flash renvoie une copie du tableau, pas le tableau de filtres en direct. Pousser un nouveau filtre ou mettre à jour des filtres existants ne modifiera que la copie, pas l'original; vous devez l'assigner au tableau pour refléter les changements.

Faites-le à partir d'actionscript au lieu de mxml.


Je préférerais ne pas créer un nouveau filtre, car je reçois des problèmes avec swapChildren.

swapChildren s'applique uniquement aux objets d'affichage (UIComponents dans le cas de conteneurs flexibles).

Questions connexes