无法修改 MovieClip 过滤器 属性
Cannot modify a MovieClip filter property
我对 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;
}
}
根据 adobe 的指南:Graphic Effects Learning Guide for Flash: Filters
Each filter has a set of properties unique to it. The filters can be
accessed and modified just like a regular array object, although
getting and setting the filters using the filters property returns a
duplicate of the filters object instead of a reference.
// This will not work
my_mc.filters[0].blurX = 20;
Because the previous code snippet returns a copy of the filters array,
it modifies the duplicate. In order to modify the blurX property, you
need to use the following ActionScript code instead:
// 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;
}
}
我对 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;
}
}
根据 adobe 的指南:Graphic Effects Learning Guide for Flash: Filters
Each filter has a set of properties unique to it. The filters can be accessed and modified just like a regular array object, although getting and setting the filters using the filters property returns a duplicate of the filters object instead of a reference.
// This will not work my_mc.filters[0].blurX = 20;
Because the previous code snippet returns a copy of the filters array, it modifies the duplicate. In order to modify the blurX property, you need to use the following ActionScript code instead:
// 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;
}
}