0

我正在将 aDropShadowFilter应用于 Adob​​e AIR 3.5、ActionScript 3 Mobile 项目中的位图。在大多数情况下,它工作正常。但是,有时会在底部或右侧稍微切掉图像。

看这些图片:

在此处输入图像描述对比在此处输入图像描述

如您所见,应用投影时,右侧和底部均被裁剪。是否有一个原因?或者有什么方法可以解决?

编辑(MST 2-27 上午 10:30):作为快速更新,它也BlurFilter可能与任何其他过滤器一起发生。

4

2 回答 2

1

我不确定您是如何生成位图的,但如果您使用的是 BitmapData 类,请使用方便的generateFilterRect()函数,该函数将计算应用传递的过滤器的新边界。

这应该为您提供正确的尺寸,尤其是在使用扩展对象外观的 BlurFilter 或 BevelFilter 时。还请查看方法描述下方的示例。

于 2013-02-27T19:30:20.957 回答
1

Bitmap位于非整数 x 或 y 位置时会发生这种情况。这似乎是源数据如何传递给过滤器的一个错误,我找不到一个好的解决方案来尝试不同BitmappixelSnappingsmoothing属性。

您可以通过舍入其全局位置来保持图像完全对齐(请参见localToGlobalglobalToLocal,但如果它移动,则可能更容易将其包裹BitmapSprite具有稍大透明背景的 a 中,以强制过滤器在边缘周围包含安全边距。一些东西像这样:

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到稍大的副本来执行相同的操作。

于 2013-02-27T23:29:05.833 回答