如何扭曲Flex中的图像(或FXG)?
发布时间:2020-12-15 01:45:37 所属栏目:百科 来源:网络整理
导读:我想在Flex中扭曲图像(或FXG). 基本上只想修改图像的边缘,如下图所示.我知道如何做出简单的扭曲,但我找不到这样做的方法. 解决方法 答案是对的……你需要的是一个DisplacementMapFilter !! displaImage通常应该是灰色的 – 意味着没有失真,并为每个下边缘和
我想在Flex中扭曲图像(或FXG).
基本上只想修改图像的边缘,如下图所示.我知道如何做出简单的扭曲,但我找不到这样做的方法. 解决方法
答案是对的……你需要的是一个DisplacementMapFilter !!
displaImage通常应该是灰色的 – >意味着没有失真,并为每个下边缘和上边缘添加白色和灰色的径向渐变,如下所示: 使用地图,您可以这样: package { import flash.display.BitmapData; import flash.display.BitmapDataChannel; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.filters.DisplacementMapFilter; import flash.filters.DisplacementMapFilterMode; import flash.geom.Point; import flash.net.URLRequest; public class DistortImage extends Sprite { private var sourceImage:Loader; private var distortMap:Loader; public function DistortImage() { super(); // Loading the Image to be distorted sourceImage = new Loader(); var requ: URLRequest = new URLRequest("text.jpg"); sourceImage.contentLoaderInfo.addEventListener(Event.COMPLETE,loadMap); sourceImage.load(requ); } private function loadMap( E:Event = null ):void{ // loading distortion map ( grayscale ) distortMap = new Loader(); var requ: URLRequest = new URLRequest("distortMap.jpg"); distortMap.contentLoaderInfo.addEventListener(Event.COMPLETE,applyDistortion); distortMap.load(requ); } private function applyDistortion( E:Event = null ):void{ // get jpg as BitmapData var bmpData:BitmapData = new BitmapData( distortMap.content.width,distortMap.content.height); bmpData.draw(distortMap); // create the filter - notice gray(128,128,128) means no distortion white is negative black is positive distortion var offsetOfMap:Point = new Point(0,0); var redChannelCode:uint = BitmapDataChannel.RED; // is not important cause you just need oneway distortion var yDistortion:int = 20; // strength var distortFilter:DisplacementMapFilter = new DisplacementMapFilter(bmpData,offsetOfMap,redChannelCode,yDistortion,DisplacementMapFilterMode.COLOR,0xffffff,0); // filters need to be included in an array to add on display Object var filters:Array = new Array(); filters.push(distortFilter); // adding filter to image sourceImage.filters = filters; addChild(sourceImage); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |