2012-12-06 40 views
0

這是我的問題。位移貼圖過濾器不適用於蒙面圖像

我有一個大小爲958 * 580的圖像。當我應用位移貼圖過濾器時,它完美地工作,並且我想要的區域也受到相應的影響。當我遮住這個圖像時,它只顯示過濾器應該作用的區域,沒有任何顯示。圖像被遮罩,但該區域不再受濾鏡的影響。

我不確定我是否錯過了位移貼圖過濾器或面具本身的工作原理,但我希望這裏有人能給我一個或兩個關於可能是什麼問題的指針。

在此先感謝。

回答

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); 
}