function createRef(picSource:DisplayObject):
void
{
//
倒置
var bd:BitmapData
=
new
BitmapData(picSource.width, picSource.height,
true
,
0x12346f
);
var mtx:Matrix
=
new
Matrix();
mtx.d
=
-
1
;
mtx.ty
=
bd.height;
bd.draw(picSource, mtx);
//
添加渐变遮罩
var width:
int
=
bd.width;
var height:
int
=
bd.height;
mtx
=
new
Matrix();
mtx.createGradientBox(width, height,
0.5
*
Math.PI);
var shape:Shape
=
new
Shape();
shape.graphics.beginGradientFill(GradientType.LINEAR, [
0
,
0
], [
0.9
,
0.2
], [
0
,
0xFF
], mtx);
shape.graphics.drawRect(
0
,
0
, width, height);
shape.graphics.endFill();
var mask_bd:BitmapData
=
new
BitmapData(width, height,
true
,
0
);
mask_bd.draw(shape);
//
生成最终效果
bd.copyPixels(bd, bd.rect,
new
Point(
0
,
0
), mask_bd,
new
Point(
0
,
0
),
false
);
//
将倒影放置于图片下方
var ref:Bitmap
=
new
Bitmap();
ref.y
=
picSource.height
+
picSource.y;
ref.x
=
picSource.x;
ref.bitmapData
=
bd;
picSource.parent.addChild(ref);
}
AS3倒影算法
最新推荐文章于 2025-08-23 18:37:13 发布