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倒影算法
最新推荐文章于 2024-10-27 12:59:29 发布