当前位置:软件学习 > Flash >>

flash as 3.0实现在线切图效果

最近在做东西的时候要用到图像的裁剪,自然就要用到bitmapData了。很早以前做过基于透明像素的橡皮檫,这个图像裁剪的原理和橡皮檫的原理一样。也许很久没用又出于陌生了,所以决定好好在做一次,又加深些印象。哈哈...

(双击上面那个心生成图像)


以下是图像裁剪核心的代码:
function cutLayer_doubleClick_handler(me:MouseEvent)

cutBtn.mouseEnabled=true;
isCut=false 
itf.actionExit(); //缩放编辑对象退出动作

//temp_bmd主要用于copyPixels ()时候alphaBitmapData的获得,简单理解就是遮照层不规则图象获得
var temp_bmd:BitmapData=new BitmapData(org_sprite.width,org_sprite.height,true,0)
//compare_bmd主要是从源bitmapData在遮照层(不规则图象)上复制的象素图象
var compare_bmd:BitmapData=new BitmapData(org_sprite.width,org_sprite.height,true,0)

//画遮照层对图象的位移,缩放,旋转设置
var temp_matrix:Matrix=new Matrix();

temp_matrix.scale(cut_layer.scaleX,cut_layer.scaleY); 
temp_matrix.rotate(cut_layer.rotation/180*Math.PI);
temp_matrix.translate(cut_layer.x,cut_layer.y); 

//因为遮照层采用了一个遮照Mc和一个透明图象,如果copyPixels时不将alphaBitmapData的透明度为最大.那么copy的图象和alphaBitmapData的透明度是一样的
var temp_ctf:ColorTransform=new ColorTransform()
temp_ctf.alphaOffset=255

//画不规则遮照层
temp_bmd.draw(cut_layer,temp_matrix,temp_ctf);

//复制象素
compare_bmd.copyPixels(org_bmd,
org_sprite.getBounds(this),
new Point(0,0),
temp_bmd,
new Point(0,0),
false);

//显现复制图象
compare_bm.bitmapData=compare_bmd;
}
补充:flash教程,As3.0
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,