更改高度和高度时,不会显示Flash AS3阴影。宽度

时间:2009-07-09 16:25:36

标签: actionscript-3 flash dropshadow

在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);

3 个答案:

答案 0 :(得分:2)

我复制并粘贴了您的代码,似乎可以正常工作。当然,我不知道您的库符号是什么样的(我只使用了灰色sqare)并且我已经用静态值替换了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属性,而是将该过滤器添加到现有过滤器中。我很好奇是否有效。

答案 1 :(得分:1)

请注意,过滤器不适用于大于“特定值”的剪辑,请查看this thread中的评论...

答案 2 :(得分:0)

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

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

这已经逐渐消失了。将alpha更改为1或2,看看是否可以看到它。此外,您似乎没有设置颜色。我认为默认是黑色。确保你的物体不是在黑暗的东西上,你只是错过它。