我正在将 aDropShadowFilter
应用于 Adobe AIR 3.5、ActionScript 3 Mobile 项目中的位图。在大多数情况下,它工作正常。但是,有时会在底部或右侧稍微切掉图像。
看这些图片:
对比
如您所见,应用投影时,右侧和底部均被裁剪。是否有一个原因?或者有什么方法可以解决?
编辑(MST 2-27 上午 10:30):作为快速更新,它也BlurFilter
可能与任何其他过滤器一起发生。
我正在将 aDropShadowFilter
应用于 Adobe AIR 3.5、ActionScript 3 Mobile 项目中的位图。在大多数情况下,它工作正常。但是,有时会在底部或右侧稍微切掉图像。
看这些图片:
对比
如您所见,应用投影时,右侧和底部均被裁剪。是否有一个原因?或者有什么方法可以解决?
编辑(MST 2-27 上午 10:30):作为快速更新,它也BlurFilter
可能与任何其他过滤器一起发生。
我不确定您是如何生成位图的,但如果您使用的是 BitmapData 类,请使用方便的generateFilterRect()函数,该函数将计算应用传递的过滤器的新边界。
这应该为您提供正确的尺寸,尤其是在使用扩展对象外观的 BlurFilter 或 BevelFilter 时。还请查看方法描述下方的示例。
当Bitmap
位于非整数 x 或 y 位置时会发生这种情况。这似乎是源数据如何传递给过滤器的一个错误,我找不到一个好的解决方案来尝试不同Bitmap
的pixelSnapping
和smoothing
属性。
您可以通过舍入其全局位置来保持图像完全对齐(请参见localToGlobal
和globalToLocal
,但如果它移动,则可能更容易将其包裹Bitmap
在Sprite
具有稍大透明背景的 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
到稍大的副本来执行相同的操作。