0

CreationCompleteイベントでいくつかのボタンにドロップシャドウ効果を追加しようとしています。

インポートflash.filters.DropShadowFilter;

// #1 Does work but removes other filters
protected function onButtonCreate(e:Event):void
{
 (e.target as Button).filters = [new DropShadowFilter(1,45,0x000000,0.4,4,4,2,1,false,true,false)];
}


// #2 Does not work
protected function onButtonCreate(e:Event):void
{
 (e.target as Button).filters.push(new DropShadowFilter(1,45,0x000000,0.4,4,4,2,1,false,true,false));
}


// #3 Does not work
protected function onButtonCreate(e:Event):void
{
 (e.target as Button).filters[(e.target as Button).filters.length] = new DropShadowFilter(1,45,0x000000,0.4,4,4,2,1,false,true,false);
}

私は何が間違っているのですか?それを行う正しい方法は何ですか?

編集:私はフレックススパークテーマを使用しています。ボタンのfilters配列には要素がありませんが、filterプロパティを変更すると、Sparkテーマに適用されているすべてのスタイルが削除されますか?

4

1 に答える 1

3

これのAdboes実装はちょっとハッキーで、配列の更新をリッスンしませんが、配列を設定するだけでフィルターが更新されます。したがって、これが解決方法です(古い配列をコピーして新しい配列をプッシュします)。

var button:Button = (e.target as Button);
var oldFilters:Array = button.filters;
oldFilters.push(new DropShadowFilter(1,45,0x000000,0.4,4,4,2,1,false,true,false)]);
button.filters = oldFilters;

これが機能しない場合は、古い配列の内容を使用して新しい配列を作成し、新しいフィルターを新しい配列にプッシュする必要があります。

于 2012-05-21T15:29:02.443 に答える