我已经复制并粘贴了您的代码,它似乎有效。当然,我不知道你的库符号是什么样的(我只是用了一个灰色的正方形),我已经houseXML
用静态值替换了变量。我试过的代码如下:
var mcWhiteBorder:whiteBorder = new whiteBorder();
var dropShadow:DropShadowFilter = new DropShadowFilter();
dropShadow.distance = 1;
dropShadow.alpha = .2;
dropShadow.blurX = 10;
dropShadow.blurY = 10;
mcWhiteBorder.height = 200;
mcWhiteBorder.width = 300;
mcWhiteBorder.x = 50;
mcWhiteBorder.y = 50;
mcWhiteBorder.filters = [dropShadow];
addChild(mcWhiteBorder);
它似乎工作得很好。检查你houseXML
并查看你分配的值是否有效等等。
我过去也遇到过一些问题。我得出的结论是,如果您将过滤器添加到现有的过滤器数组中,而不是创建一个新的过滤器,即使它是空的,它也总是有效的。我不太确定为什么。您的代码将类似于:
var mcWhiteBorder:whiteBorder = new whiteBorder();
var tmpFilters:Array = mcWhiteBorder.filters;
var dropShadow:DropShadowFilter = new DropShadowFilter();
dropShadow.distance = 1;
dropShadow.alpha = .2;
dropShadow.blurX = 10;
dropShadow.blurY = 10;
mcWhiteBorder.height = houseXML.height-40;
mcWhiteBorder.width = houseXML.width+5;
mcWhiteBorder.x = houseXML.photoX-10;
mcWhiteBorder.y = houseXML.photoY+20;
tmpFilters.push(dropShadow);
mcWhiteBorder.filters = tmpFilters;
addChild(mcWhiteBorder);
filters
因此,您实际上是将该过滤器添加到现有的过滤器中,而不是为属性分配过滤器。我很好奇这是否有效。