0

在 as3 中,我正在创建一个投影,效果很好。但是,当我更改对象 (mcWhiteBorder) 的高度或宽度时,投影根本不会出现。有任何想法吗?

var mcWhiteBorder:whiteBorder = new whiteBorder();
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;
mcWhiteBorder.filters = [dropShadow];

addChild(mcWhiteBorder);
4

3 回答 3

2

我已经复制并粘贴了您的代码,它似乎有效。当然,我不知道你的库符号是什么样的(我只是用了一个灰色的正方形),我已经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因此,您实际上是将该过滤器添加到现有的过滤器中,而不是为属性分配过滤器。我很好奇这是否有效。

于 2009-08-07T07:09:31.373 回答
1

请注意,过滤器不适用于大于“某些值”的剪辑,请查看此线程中的评论...

于 2009-08-07T10:29:12.623 回答
0

我没有看到任何语法问题。

dropShadow.distance = 1;
dropShadow.alpha = .2;
dropShadow.blurX = 10;
dropShadow.blurY = 10;

那是相当淡化了。将 alpha 更改为 1 或 2 看看是否可以看到。另外,您似乎没有设置颜色。我认为默认是黑色的。确保你的对象不是在黑暗的东西上,你只是想念它。

于 2009-07-09T16:41:27.533 回答