0

これが私の質問です。

サイズが 958*580 の画像があります。ディスプレイスメント マップ フィルターを適用すると、完全に機能し、必要な領域がそれに応じて影響を受けます。この画像をマスクすると、フィルターが作用するはずの領域のみが表示され、何も表示されません。画像はマスクされていますが、その領域はフィルターの影響を受けていません。

ディスプレイスメント マップ フィルターまたはマスク自体のしくみについて何かが欠けているかどうかはわかりませんが、ここで誰かがここで何が問題なのかについて 1 つまたは 2 つのポインターを教えてくれることを望んでいました。

前もって感謝します。

4

1 に答える 1

0

コードを見ずに、フィルタ レンダリングの問題の原因を特定することは困難です。私はそのような行動に会ったことがありません。以下のコードを試してみてください。画像にディスプレイスメント フィルタを適用してから、円形状でマスクする必要があります。

import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.filters.DisplacementMapFilter;
import flash.geom.Point;

// image is taken form the Library, alternatively you may use Embed metatag
var imageBitmapdata:BitmapData=new imageBd() as BitmapData; 
var bitmap:Bitmap=new Bitmap(imageBitmapdata);
bitmap.width=stage.stageWidth;
bitmap.height=stage.stageHeight;


var maskCircle:Sprite=new Sprite();
maskCircle.graphics.beginFill(0xFF00FF, 1);
maskCircle.graphics.drawCircle(300,300,300);
maskCircle.graphics.endFill();


bitmap.filters=[getBitmapFilter()];
bitmap.mask=maskCircle;

addChild(bitmap);
addChild(maskCircle);


function getBitmapFilter():BitmapFilter {
    var bitmapData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true);
    bitmapData.perlinNoise(20, 20, 4, 12, true, true);
    var mapBitmap:BitmapData = bitmapData;
    return new DisplacementMapFilter(mapBitmap,new Point(0, 0),
                                 BitmapDataChannel.RED,
                                 BitmapDataChannel.RED,
                                 -20,
                                 -20,
                                 DisplacementMapFilterMode.CLAMP,
                                 0,
                                 0);
}
于 2012-12-07T13:46:50.040 に答える