0

いくつかのバインド可能な変数をパラメーターとして使用して定義された dropfilter があります。

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

次のようなメソッド呼び出しでフィルターを更新したいと思います。

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

と の両方をトレースするthis.dropShadowColortorinofilter.color、新しい色に更新されていることがわかりますが、dropfilter の色は変わりません。

swapChildren で問題が発生するため、新しいフィルターを作成しないことをお勧めします。

4

1 に答える 1

0

このようにフィルタのプロパティを変更することはできません。

既存のフィルター オブジェクトを変更するには、filters 配列のコピーを変更する手法を使用する必要があります。

  1. filters配列の値を、という名前の一時配列に割り当てますmyFilters
  2. 一時配列 を使用してプロパティを変更しますmyFilters。たとえば、配列内の最初のフィルターの品質プロパティを設定するには、次のコードを使用できます。myFilters[0].quality = 1;
  3. 一時配列の値を配列に割り当てますfilters

基本的にfilters、DisplayObject の配列を読み取ると、フラッシュはライブ フィルター配列ではなく、配列のコピーを返します。新しいフィルターをプッシュしたり、既存のフィルターを更新したりすると、元のフィルターではなく、コピーのみが変更されます。変更を反映するには、配列に割り当てる必要があります。

mxml ではなく actionscript からこれを行います。


で問題が発生するため、新しいフィルターを作成しないことをお勧めしswapChildrenます。

swapChildren表示オブジェクト (フレックス コンテナーの場合は UIComponents) にのみ適用されます。

于 2010-06-25T04:46:16.860 に答える