2009-07-09 102 views
0

在as3中,我創建了一個陰影,效果很好。但是當我改變對象的高度或寬度時(mcWhiteBorder),陰影根本不會出現。有任何想法嗎?更改高度和寬度時,不會顯示Flash AS3陰影

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); 
+0

請問上面的代碼工作,或你有註釋掉.height和.width語句?你已經在whiteBorder剪輯上有過濾器了,還是在裏面?你正在清理過濾器的任何地方,還是以任何形式循環或行動? – typeoneerror 2009-07-10 15:44:37

回答

1

注意到,過濾器不與剪輯不是「一定值」更大的工作,看看在this thread評論...

0

我沒有看到語法方面的任何問題。

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

這是相當淡化。將alpha更改爲1或2,然後查看是否可以看到它。另外,你似乎沒有設置顏色。我認爲默認是黑色的。確保你的對象不是黑暗的東西,你只是想念它。

+0

事情是,我確實看到它。只要我不改變高度或寬度,所以我認爲它不僅僅是阿爾法。 – Matt 2009-07-09 16:45:46

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

所以不是asigning過濾到filters屬性,你實際上補充說,過濾器,以現有的。我很好奇,如果這有效。

+0

我從來沒有任何問題指定過濾器的方式......你應該始終知道,DisplayObject.filters是一個數組,並以這種方式行事......如果你爲過濾器分配一個新的過濾器數組,它顯然會取代以前的所有過濾器...... – Cay 2009-08-07 10:36:15