图形处理
第十一课 图形处理
主要内容:
滤镜
矩阵变换
BitmapData类
练习
作业
精确碰撞检测
滤镜:
flash.filters包
BitmapFilter类:所有图像滤镜效果的基类
包 flash.filters 类
public class BitmapFilter
继承 BitmapFilter è Object
子类 BevelFilter, BlurFilter, ColorMatrixFilter, ConvolutionFilter, DisplacementMapFilter, DropShadowFilter, GlowFilter, GradientBevelFilter, GradientGlowFilter, ShaderFilter
滤镜—BlurFilter类(模糊滤镜)
属性
blurX (x轴方向模糊的像素数量 = 4)
blurY (y轴方向模糊的像素数量 = 4)
quality (执行模糊处理的次数0-15,默认 = 1)
方法
构造函数:
BlurFilter(blurX:Number = 4.0, blurY:Number = 4.0, quality:int = 1)
clone():BitmapFilter——返回此滤镜对象的副本
滤镜—DropShadowFilter类(投影)
distance (从现实对象到阴影的偏移像素数量 = 4)
angle (光源角度 = 45度)
color (阴影颜色 从0x000000 到 0xFFFFFF 默认=0)
alpha (透明度,从0到1,默认 = 1)
blurX (x轴方向模糊的像素数量 = 4)
blurY (y轴方向模糊的像素数量 = 4)
strength (阴影的长度,从0到255,默认 = 1)
quality (模糊处理次数,1—15,默认 = 1)
inner (Boolean值,阴影是否应用于显示对象内部,默认false)
knockout (Boolean值,原显示对象是否透明)
hideObject (Boolean值,是否隐藏原现实对象)
方法
构造函数:DropShadowFilter(distance:Number = 4.0, angle:Number = 45,
color:uint = 0, alpha:Number = 1.0, blurX:Number = 4.0,
blurY:Number = 4.0, strength:Number = 1.0, quality:int = 1,
inner:Boolean = false, knockout:Boolean = false, hideObject:Boolean = false)
clone():BitmapFilter——返回此滤镜对象的副本
滤镜—BevelFilter类(斜角):
属性
distance (从显示对象到阴影的偏移像素数量 = 4)
angle (光源角度 = 45度)
higglightColor (高亮区影颜色 从0x000000 到 0xFFFFFF 默认=0xFFFFFF)
highlightAlpha (高亮区透明度,从0到1,默认 = 1)
shadowColor (高亮区影颜色 从0x000000 到 0xFFFFFF 默认=0)
shadowAlpha (高亮区透明度,从0到1,默认 = 1)
blurX (x轴方向模糊的像素数量 = 4)
blurY (y轴方向模糊的像素数量 = 4)
strength (阴影的长度,从0到255,默认 = 1)
quality (模糊处理次数,1—15,默认 = 1)
type (“inner”,“outer”,“full”,默认“inner”)
knockout (Boolean值,原显示对象是否透明)
方法
构造函数:BevelFilter(distance:Number = 4.0, angle:Number = 45, highlightColor:uint = 0xFFFFFF,
highlightAlpha:Number = 1.0, shadowColor:uint = 0x000000, shadowAlpha:Number = 1.0,
blurX:Number = 4.0, blurY:Number = 4.0, strength:Number = 1, quality:int = 1,
type:String = "inner", knockout:Boolean = false)
clone():BitmapFilter——返回此滤镜对象的副本
滤镜—GlowFilter类(发光):
属性
color (发光效果的颜色 从0x000000 到 0xFFFFFF 默认=0xFF0000)
alpha (发光效果的透明度,从0到1,默认 = 1)
blurX (x轴方向模糊的像素数量 = 4)
blurY (y轴方向模糊的像素数量 = 4)
strength (发光效果延伸的长度,从0到255,默认 = 2)
quality (模糊处理次数,1—15,默认 = 1)
inner (Boolean值,发光效果是否应用于显示对象内部,默认false)
knockout (Boolean值,原显示对象是否透明)
方法
构造函数:GlowFilter(color:uint = 0xFF0000, alpha:Number = 1.0,
blurX:Number = 6.0, blurY:Number = 6.0, strength:Number = 2,
quality:int = 1, inner:Boolean = false, knockout:Boolean = false)
clone():BitmapFilter——返回此滤镜对象的副本
矩阵变形
flash.geom包 (geom几何)
Matrix 类
Point 类
Rectangle 类
Transform 类
ColorTransform 类
矩阵变形——Matrix类
属性
a :缩放或旋转图像时影响像素沿 x 轴定位的值
b :旋转或倾斜图像时影响像素沿 y 轴定位的值
c :旋转或倾斜图像时影响像素沿 x 轴定位的值
d :缩放或旋转图像时影响像素沿 y 轴定位的值
tx :沿 x 轴平移每个点的距离
ty :沿 y 轴平移每个点的距离
方法:
构造函数 Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)
clone():Matrix
rotate(angle:Number):void 对 Matrix 对象应用旋转转换。
scale(sx:Number, sy:Number):void 对矩阵应用缩放转换。
translate(dx:Number, dy:Number):void 沿 x 和 y 轴平移矩阵, 由 dx 和 dy 参数指定
Point类
属性
length:Number 从 (0,0) 到此点的线段长度
x:Number
y:Number
构造函数 Point(x:Number = 0, y:Number = 0)
方法:
distance(pt1:Point, pt2:Point):Number
offset(dx:Number, dy:Number):void
Rectangle类
属性
x
y
width
height
构造函数: Rectangle(x:Number = 0, y:Number = 0, Number = 0, height:Number = 0)
方法
containsPoint(point:Point):Boolean
containsRect(rect:Rectangle):Boolean
Transform类
属性
colorTransform:ColorTransform
matrix:Matrix
无构造函数
ColorTransform类
属性
redMultiplier / redOffset
greenMultiplier / greenOffset
blueMultiplier / blueOffset
alphaMultiplier / alphaOffset -255 到 255 之间的数字
新红色值 = (旧红色值 * redMultiplier) + redOffset
新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset
新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset
新 Alpha 值 = (旧 Alpha 值 * alphaMultiplier) + alphaOffset
color;
ColorTransform类构造函数
ColorTransform(redMultiplier:Number = 1.0, greenMultiplier:Number = 1.0, blueMultiplier:Number = 1.0, alphaMultiplier:Number = 1.0, redOffset:Number = 0, greenOffset:Number = 0, blueOffset:Number = 0, alphaOffset:Number = 0)
参数
redMultiplier:Number (default = 1.0) — 红色乘数的值,在 0à 1
greenMultiplier:Number (default = 1.0) — 绿色乘数的值,在 0 à1
blueMultiplier:Number (default = 1.0) — 蓝色乘数的值,在 0à1
alphaMultiplier:Number (default = 1.0) — Alpha 透明度乘数值,在 0 à1
redOffset:Number (default = 0) — 红色通道值偏移量,-255 到 255
greenOffset:Number (default = 0) — 绿色通道值偏移量,-255 到 255
blueOffset:Number (default = 0) — 蓝色通道值偏移量,-255 到 255
alphaOffset:Number (default = 0) — Alpha 透明度通道值偏移量,-255à 255
BitmapData类
Bitmap
属性:
int,
height:int;
transparent:Boolean
fillColor:uint
构造函数:BitmapData(int, height:int, transparent:Boolean = false, fillColor:uint = 0xFFFFFFFF)
BitmapData类——方法
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
getPixel(x:int, y:int):uint 0xFFFFFF
getPixel32(x:int, y:int):uint 0xFFFFFFFF
setPixel(x:int, y:int, color:uint):void 0xFFFFFF
setPixel32 () 0xFFFFFFFF
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
Draw方法的属性
source:IBitmapDrawable
matrix:Matrix = null,
colorTransform:ColorTransform = null,
blendMode:String = null,
clipRect:Rectangle = null,
smoothing:Boolean = false
精确碰撞检测
基于BitmapData 之 hitTest 方法的碰撞检测
参数说明:
firstPoint:Point BitmapData 图像的左上角的位置
firstAlphaThreshold:uint最小的 Alpha 通道值
secondObject:Object 一个 Rectangle、Point、Bitmap 或 BitmapData 对象
secondBitmapDataPoint:Point = null,定义第二个 BitmapData 对象中的一个像素位置
secondAlphaThreshold:uint = 1第二个 BitmapData 对象中最小的 Alpha 通道值