【问题标题】:Cannot modify a MovieClip filter property无法修改 MovieClip 过滤器属性
【发布时间】:2017-09-06 08:31:07
【问题描述】:

我对影片剪辑应用了斜角滤镜。稍后在我的代码中,当我尝试更改过滤器属性时,它似乎不起作用。

这是我的代码:

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

【问题讨论】:

  • 你看到了什么结果?它会进入if 吗?你看到trace 被输出了吗?
  • 是的,我得到了跟踪,但过滤器没有改变

标签: actionscript-3 flash air


【解决方案1】:

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

每个过滤器都有一组独特的属性。过滤器可以是 像普通数组对象一样访问和修改,虽然 使用过滤器属性获取和设置过滤器返回一个 过滤器对象的副本,而不是引用。

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

因为前面的代码 sn-p 返回了过滤器数组的副本, 它修改了副本。为了修改 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;
  }
}

【讨论】:

    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多