0

这是我的问题。

我有一个尺寸为 958*580 的图像。当我对其应用置换贴图过滤器时,它可以完美运行,并且我想要的区域也会受到相应的影响。当我屏蔽此图像时,它只显示过滤器应该作用的区域,没有任何显示。图像被蒙版,但该区域不再受滤镜影响。

我不确定我是否遗漏了有关置换贴图过滤器或蒙版本身如何工作的信息,但我希望这里的某个人能给我一两个关于这里可能存在的问题的指针。

提前致谢。

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 回答