第18章位图和滤镜

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第18章位图和滤镜在ActionScript3.0中加入了对位图的支持,可以实现创建位图图像,也可以把外部的位图图像加载到Flash中利用滤镜类,可以对Flash元件和位图增加各种滤镜效果。结合位图和滤镜类,可以实现访问和更改各个像素值的功能,也可以创建自己的滤镜式图像效果并使用内置杂点功能创建纹理和随机杂点。1.位图计算机系统中支持的图像主要分为两类:矢量图形和位图图像。本节将介绍位图的基础知识,以及在ActionScript3.0中所提供的位图处理包的相关内容。1)位图基础矢量图形由以数学方式生成的几何形状,如直线、曲线和多边形等基本图形组成,在AdobeFlashCS3中创作的图像属于矢量图形。位图图像也称为光栅图像,由排列为矩形网格形式的小方块,也就是像素组成,在AdobePhotoShopCS3中创作的图像属于位图图像。位图图像是用图像的宽度和高度来定义,以像素为量度单位。其中像素是指位图图像中的最小信息单位,表示在屏幕中显示的单个不同颜色的点。每个像素由对应的颜色值来表示。在使用RGB颜色表示的位图图像中,像素由红、绿和蓝三个字节组成,每个字节包含一个0到255之间的数字。将三个字节合并成为一个颜色值,应用于显示对象,就能够产生与绘画颜色相似的颜色。2)Bitmap类Bitmap类用来表示位图图像的显示对象。这些图像可以是使用显示对象的Loader类加载的外部图像,也可以是使用Bitmap()构造函数创建的图像。Bitmap类创建的图像,其信息可以使用其BitmapData属性来引用并处理。Bitmap对象是一种显示对象,因此可以使用显示对象的属性和方法来进行操作和控制。此外,Bitmap对象还有两个常用的属性:PixelSnapping象素贴紧和smoothing平滑。PixelSnapping象素贴紧属性用于控制Bitmap对象是否贴紧至最近的像素。PixelSnapping属性包括以下可能值:PixelSnapping.NEVER:不进行像素贴紧。PixelSnapping.ALWAYS:图像始终与最近的像素贴紧,与变形无关。PixelSnapping.AUTO:如果绘制图像时未应用旋转或倾斜效果,并且图像是以99.9%到100.1%的缩放系数绘制的,则图像将与最近的像素贴紧。3)BitmapData类BitmapData类用于处理Bitmap对象的像素数据,也可以使用BitmapData类的方法创建任意大小的透明或不透明位图图像,并在运行时采用多种方式操作这些图像。此类还可以访问使用显示对象的Loader类加载的位图图像的BitmapData值。BitmapData类的表18-1BitmapData类属性属性数据类型说明heightint位图图像的高度,以像素为单位。只读属性。rectRectangle定义位图图像大小和位置的矩形。只读属性。transparentBoolean定义位图图像是否支持每个像素具有不同的透明度。只读属性。widthint位图图像的宽度,以像素为单位。z属性有4个,如表所示:属性数据类型说明heightint位图图像的高度,以像素为单位。只读属性。rectRectangle定义位图图像大小和位置的矩形。只读属性。transparentBoolean定义位图图像是否支持每个像素具有不同的透明度。只读属性。widthint位图图像的宽度,以像素为单位。4)创建位图创建位图,需要把Bitmap类和BitmapData类结合使用。使用Bitmap类创建位图对象,使用BitmapData类创建Bitmap对象的数据信息,最后使用Bitmap对象的构造函数或bitmapdata属性获得BitmapData创建的数据。Bitmap类的构造函数格式如下所示:Bitmap(bitmapData,pixelSnapping,smoothing)参数说明如下:bitmapData:被引用的BitmapData对象数据。默认值为null。pixelSnapping:确定Bitmap对象是否贴紧至最近的像素。默认值为“auto”。smoothing:确认在缩放时是否对位图进行平滑处理。默认值为false。5)加载外部图像在ActionScript3.0中支持加载外部的位图图像到位图中。加载外部的图像,需要使用显示对象的Loader类的load方法来实现。具体实现请参见22.1节。下面的示例使用Loader对象,从外部加载一幅位图图像,并把它加入到Bitmap位图对象上。使用文档类:LoadImage,代码如下所示:2.处理像素在ActionScript3.0中,利用BitmapData类的方法,既可以处理单个像素点,又可以处理像素数组。本节将介绍处理单个和多个像素的方法。1)获取单个像素在使用像素处理位图图像时,首先需要获取要处理区域中所包含的像素的颜色值。在ActionScript3.0中,可以使用getPixel()方法从指定坐标点(x,y)中获取RGB颜色值。若需要获得包括透明度Alpha通道信息,则需要使用getPixel32()方法。getPixel()方法用于获取位图指定点的RGB像素值。其用法格式如下所示:getPixel(x:int,y:int)说明:此方法将返回一个整数,表示BitmapData对象中在某个特定点(x,y)处的RGB像素值,如果(x,y)坐标在图像范围之外,则返回0。参数说明如下:x:像素点的x坐标位置。y:像素点的y坐标位置。2)设置单个像素若要想更改位图中包含的某个像素的颜色或透明度,则可以使用setPixel()方法或setPixel32()方法。若要设置像素的颜色,则这两种方法都可以使用。setPixel()方法用于设置BitmapData对象的单个像素值。此方法会保留图像像素的当前Alpha通道值。其用法格式如下所示:setPixel(x:int,y:int,color:uint)参数说明如下:x:指定要更改的像素点的x坐标位置。y:指定要更改的像素点的y坐标位置。color:指定像素点要改变成的RGB颜色值3)处理像素数组若要获取一个区域的像素而不是单个像素的值,可以使用getPixels()方法来实现。其用法格式如下所示:getPixels(rect:Rectangle)参数rect表示当前BitmapData对象中的一个矩形区域,返回的结果是表示给定矩形对象中的像素的字节数组。字节数组的每个元素,即像素值都是无符号的整数(32位未经相乘的像素值)。相反,若要更改一组像素值,可以使用setPixels()方法来实现。其用法格式如下所示:setPixels(rect:Rectangle,inputByteArray:ByteArray)此方法实现将字节数组转换为像素数据的矩形区域。字节数组中的数据应该是32位ARGB像素值。参数说明如下:rect:指定应用像素设置的BitmapData对象的矩形区域。inputByteArray:字节数组对象,由要在矩形区域中使用的32位未经过相乘的像素值组成。3.位图的复制位图复制就是将一个位图的数据复制到另一个位图图像。在ActionScript3.0中,BitmapData类提供了4种位图复制的方法,分别为:clone()方法、copyPixels()方法、copyChannel()方法和draw()方法。1)clone()方法clone()方法用于实现对原位图对象的克隆效果,此方法将产生一个与原位图完全相同的副本。其用法格式如下所示:clone()注意:复制产生的副本的修改并不影响原位图的效果。下面的示例使用clone()方法实现载入一个外部的位图,并进行复制操作。使用文档类:Clone,代码如下所示:2)copyPixels()方法copyPixels()方法用于将目标位图对象的BitmapData数据按照指定的坐标和矩形区域进行复制,并将复制出的数据作用于另一个位图对象。其用法格式如下所示:copyPixels(sourceBitmapData,sourceRect,destPoint,alphaBitmapData,alphaPoint,mergeAlpha)参数说明如下:sourceBitmapData:要从中复制像素的目标位图图像。该图像是一个BitmapData实例,也可以指自身BitmapData实例。也就是可以从自身复制一部分。sourceRect:表示要从目标图像获得区域的矩形。destPoint:表示将在其中放置新像素的矩形区域的左上角。alphaBitmapData:表示AlphaBitmapData对象源。alphaPoint:Point:AlphaBitmapData对象源中与sourceRect参数的左上角对应的点。mergeAlpha:若要使用Alpha通道,请将该值设置为true。3)copyChannel()方法copyChannel()方法实现将一个Bitmapdata对象中某一个通道的数据复制到另一个Bitmapdata对象的某个通道当中。其用法格式如下所示:copyChannel(sourceBitmapData,sourceRect,destPoint,sourceChannel,destChannel)参数说明如下:sourceBitmapDat:要使用的目标位图图像。此图像可以是自身图像,也可以是另一个图像。sourceRect:指定要从源图像中复制的矩形Rectangle对象。最大不能超过源图像。destPoint:获取数据位置的目标Point对象,表示要在其中放置新通道数据的矩形区域的左上角。sourceChannel:源通道。destChannel:uint:目标通道。4)draw()方法draw()方法可以实现使用FlashPlayer矢量渲染器在位图图像上绘制源显示对象。而且可以指定矩阵颜色转换和混合模式和目标区域参数来控制呈现的执行方式。此外还可以根据需要指定是否应在缩放时对位图进行平滑处理。其用法格式如下所示:draw(source,matrix,colorTransform,blendMode,smoothing)参数说明如下:source:目标位图,指要绘制到BitmapData对象的显示对象或BitmapData对象。matrix:矩阵对象,用于缩放、旋转位图或转换位图的坐标。默认值为null。colorTransform:颜色转换对象,用于调整位图的颜色值。默认值为null。blendMode:指定要应用于所生成位图的混合模式。默认值为null。clipRect:矩形对象,定义要绘制的源对象的区域。默认值为null。smoothing:用于确定因在matrix参数中指定缩放或旋转而对BitmapData对象进行缩放或旋转以后,是否对该对象进行平滑处理。默认值为false。4.使用杂点功能杂点功能用于实现在屏幕上实现类似于电视上“雪花”这样的效果。此类效果一般可以用于背景图像,也可以在动画制作过程中实现动态切换效果。在ActionScript3.0中有两种方法可以实现此效果,分别为:noise()方法和perlinNoise()方法。1)noise()方法noise()方法可以实现对位图应用杂点效果,实现对位图图像的指定区域中的像素应用随机颜色值。其用法格式如下所示:noise(randomSeed,low,high,channelOptions,grayScale)参说说明如下:randomSeed:随机整数,用于决定图案的随机种子数。要实现真正的随机结果,通常使用Math.random()方法为此参数传递随机数字。low:整数,指明要为每个像素生成的最低值(0至255)。默认值为0。此参数将决定产生的杂点的明暗程度,参数越大,亮度越高。high:整数,指明要为每个像素生成的最高值(0至255)。默认值为255。此参数同样将决定产生的杂点的明暗程度,参数越大,亮度越高。channelOptions:整数,指明将向位图对象的哪个颜色通道应

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功