0

DropShadowFilterAdobe AIR 3.5、ActionScript3Mobileプロジェクトのビットマップにを適用しています。ほとんどの場合、正常に動作します。ただし、画像の下部または右側がわずかに途切れる場合があります。

これらの画像を参照してください。

ここに画像の説明を入力してくださいvsここに画像の説明を入力してください

ご覧のとおり、ドロップシャドウを適用すると、右側と下部の両方がトリミングされます。これには理由がありますか?またはそれを修正する方法は?

編集(10:30 AM MST 2-27):クイックアップデートとして、BlurFilterおよび、おそらく他のフィルターでも発生します。

4

2 に答える 2

1

これは、Bitmapが整数以外のxまたはy位置にある場合に発生します。Bitmapソースデータがフィルターに渡される方法にバグがあるようで、さまざまなプロパティをpixelSnapping試してみると良い解決策が見つかりませんでした。smoothing

グローバルな位置を丸めることで、画像を正確に位置合わせすることができます(とを参照localToGlobalしてください。ただし、画像が移動する場合は、少し大きい透明な背景で画像をラップして、フィルターにエッジの周りに安全マージンを含めるように強制する方globalToLocalが簡単な場合があります。何かこのような:BitmapSprite

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 に答える
1

Bitmap をどのように生成しているかはわかりませんが、BitmapData クラスを使用している場合は、渡されたフィルターが適用された新しい境界を計算する便利なgenerateFilterRect()関数を使用します。

これにより、特にオブジェクトの外観を拡張する BlurFilter または BevelFilter を使用する場合に、正しい寸法が得られます。メソッドの説明の下にある例も見てください。

于 2013-02-27T19:30:20.957 に答える