Flash教程:互动的橡皮刷
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-10
以前用Flash做橡皮刷的时候通常都是通过绘制底图实现的,最近在发现其实还有一种更好的实现方法就是用bitmapdata的alpha通道。 只要在一张图片上用draw画一个透明度为零的图片,就可以实现在draw的区域图片透明了。 完成效果如下:
AS代码如下: //导入所需要的类import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; //初始点(0,0) var base_point:Point = new Point(0, 0); //初始区域(0,0,25,25) var base_rectangle:Rectangle = new Rectangle(0, 0, 25, 25); //导入库中图片 var bit1:BitmapData = BitmapData.loadBitmap("img1"); //定义org_bit:BitmapData用于恢复图片 var org_bit:BitmapData = new BitmapData(mc._width, bit1.height, true, 0); org_bit.draw(bit1); //draw_bit拷贝org_bit用于涂鸦操作 var draw_bit:BitmapData = org_bit.clone(); //导入到舞台中 _root.createEmptyMovieClip("draw_mc", 1); draw_mc.attachBitmap(draw_bit, 1); //定义橡皮刷erase_bit和笔刷redraw_bit argb为0(透明) var erase_bit:BitmapData = new BitmapData(mc1._width, mc1._height, true, 0); var redraw_bit:BitmapData = erase_bit.clone(); //橡皮刷erase_bit填充为白色,这里注意a必须不为0 rbg为FFFFFF erase_bit.fillRect(erase_bit.rectangle, 0xFFFFFFFF); //定义橡皮刷erase_bit和笔刷redraw_bit形状 注意mc1必须为黑色 你也可以尝试用别的颜色看看效果慢慢体会吧 erase_bit.draw(mc1); redraw_bit.draw(mc1); //交换erase_bit r通道和a通道数值 所以a通道数值为00 erase_bit.copyChannel(erase_bit, erase_bit.rectangle, new Point(0, 0), 1, 8); //保存当前使用的工具 var tools:String; //点击笔刷工具 mc_bursh.onRelease = function() { this.gotoAndStop(2); |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 电子杂志设计制作常用Flash技术下一篇: Flash教程:制作有趣的星座查询器
关于Flash教程:互动的橡皮刷的所有评论