【问题标题】:Adding filter to button in Flash Builder AS3在 Flash Builder AS3 中向按钮添加过滤器
【发布时间】:2012-05-21 15:25:07
【问题描述】:

我尝试在 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 主题样式?

【问题讨论】:

    标签: actionscript-3 button filter flash-builder add


    【解决方案1】:

    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;
    

    如果这不起作用,您将不得不使用旧数组的内容创建一个新数组,并将新过滤器推送到新数组。

    【讨论】:

    • 谢谢。它不起作用,只应用了新的过滤器。我也不明白为什么你必须先“复制”它才能应用效果。这是因为过滤器是动态属性吗?
    • 我认为您的解决方案可能有效。在应用新过滤器之前,过滤器没有元素。其他样式将被删除,我使用的是 flex Spark 主题。我该如何解决这个问题?
    • 查看我的编辑。这应该可以工作(我以前做过类似的事情)。
    • 对不起,它确实有效,但是它删除了其他样式!按钮具有背景渐变,在应用过滤器后将被移除(按钮是透明的,带有边框)。我正在使用 Spark 主题,有什么问题吗?甚至尝试延迟应用过滤器但无济于事。
    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 2022-11-15
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多