置换贴图过滤器不适用于蒙版图像

时间:2012-12-06 19:11:04

标签: actionscript-3 flash flash-builder

这是我的问题。

我的图片尺寸为958 * 580。当我对它应用置换贴图滤镜时,它完美地工作,我想要的区域也会受到相应的影响。当我屏蔽此图像时,它只显示过滤器应该作用的区域,不显示任何内容。图像被屏蔽,但该区域不再受过滤器的影响。

我不确定我是否遗漏了有关置换贴图过滤器或面具本身如何工作的内容,但我希望有人在这里可以给我一两个关于这里可能出现问题的指针。

提前致谢。

1 个答案:

答案 0 :(得分: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);
}