矩阵变形

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, width: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

 

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

属性:

width:int,

height:int;

transparent:Boolean

fillColor:uint

构造函数:BitmapData(width: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 通道值

不精确碰撞

创建两个元件,两个实例命名mc1,mc2
mc1.addEventListener(MouseEvent.MOUSE_MOVE,onMc1Handler);
function onMcHandler (e:MouseEvent):void
{
    mc1.x = mouse.X;
    mc1.y = mouseY;
    if(mc1.hitTestObject(mc2) == true)
    {
        trace("碰撞");
        mc1.removeEventListener(MouseEvent.MOUSE_MOVE,onMc1Handler);
    }
    else
     {
        trace("没有碰撞");
      }
}