无法修改MovieClip过滤器属性

时间:2017-09-06 08:31:07

标签: actionscript-3 flash air

我将斜角滤镜应用于MovieClip。稍后在我的代码中,当我尝试更改过滤器属性时,它似乎无法正常工作。

这是我的代码:

for (var i: int = 0; i < myMovieClip.filters.length; i++) {
    if (myMovieClip.filters[i] is BevelFilter) {
        trace("done");
        myMovieClip.filters[i].highlightColor = 0xFF0000;
        myMovieClip.filters[i].shadowColor = 0x0000FF;
        break;
    }
}

1 个答案:

答案 0 :(得分:0)

根据adobe的这份指南:Graphic Effects Learning Guide for Flash: Filters

  

每个过滤器都有一组独特的属性。过滤器可以是   尽管如此,访问和修改就像常规数组对象一样   使用filters属性获取和设置过滤器将返回a   复制过滤器对象而不是引用。

// This will not work
my_mc.filters[0].blurX = 20;
     

因为前面的代码片段返回了filters数组的副本,   它修改了副本。为了修改blurX属性,你   需要使用以下ActionScript代码:

// This will work
var filterList:Array = my_mc.filters;
filterList[0].blurX = 20;
my_mc.filters = filterList;

因此,您似乎需要将代码更改为以下内容:

var filtersList:Array = myMovieClip.filters;
for (var i: int = 0; i < filtersList.length; i++) {
  if (filtersList[i] is BevelFilter) {
    trace("done");
    filtersList[i].highlightColor = 0xFF0000;
    filtersList[i].shadowColor = 0x0000FF;
    myMovieClip.filters = filtersList;
    break;
  }
}