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);
}

我究竟做错了什么?正确的方法是什么?

编辑:我正在使用 flex Spark 主题。按钮的过滤器数组没有元素但更改过滤器属性会删除所有应用的 Spark 主题样式?

4

1 回答 1

3

Adboes 对此的实现有点 hacky,它不监听数组的更新,但只有设置数组才会更新过滤器。所以这就是你解决它的方法(复制旧数组并将新数组推送到它)。

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 回答