2013-02-27 51 views
0

我正在將DropShadowFilter應用於Adobe AIR 3.5,ActionScript 3 Mobile項目中的位圖。大多數情況下,它工作正常。然而,無論何時,無論是在底部還是右側,圖像都會被略微切掉。DropShadowFilter在ActionScript 3中裁剪位圖

看到這些圖片:

enter image description here VS enter image description here

正如你可以看到,右側和底部都採用了陰影時,裁剪。是否有一個原因?或者一種方法來解決它?

EDIT(10:30 AM MST 2-27):作爲一個快速更新,它也會發生與BlurFilter和,據推測,任何其他過濾器。

回答

1

Bitmap位於非整數x或y位置時,會發生這種情況。這似乎是源數據如何傳遞給過濾器的一個錯誤,我無法找到一個很好的解決方案,嘗試使用不同的BitmappixelSnappingsmoothing屬性。

你可以繼續按四捨五入其全球位置正好對準圖像(見localToGlobalglobalToLocal,但如果它的動作可能更容易包裹Bitmap與一個稍大的透明背景Sprite,強制過濾器包括周圍邊緣的安全餘量事情是這樣的:

private var b:Bitmap = new EmbeddedClass(); 
private var container:Sprite = new Sprite(); 
container.addChild(b); 
container.graphics.beginFill(0xFF00FF, 0); 
container.graphics.drawRect(-2, -2, container.width + 4, container.height + 4); 
container.graphics.endFill(); 
container.filters = [new DropShadowFilter()]; 

或者,你可以借鑑源BitmapData到稍大副本做同樣的事情

+0

太棒了。正是我希望看到的。那麼...不完全。這很糟糕,我不得不去解決該死的SDK,但至少它是可以修復的。只有不好的部分是我在這個項目中有數百個圖像。我想,我必須製作一個自動執行此操作的自定義Bitmap類。 Damnit,Flash。感謝你的回答。 – 2013-02-28 00:09:23

1

我不確定您是如何生成位圖的,但是如果您使用的是BitmapData類,請使用便利的generateFilterRect()函數,該函數將使用應用的傳遞過濾器計算新邊界。

這應該給你正確的尺寸,尤其是當使用BlurFilter或BevelFilter來擴展對象的外觀時。看看下面的方法描述的例子。

+0

它實際上是一個嵌入式圖像I嵌入和公正。做一個'var b:Bitmap = new Emb eddeClass();' – 2013-02-27 21:25:42