擦除效果实现,bitmapData数据清除
2013-04-17 17:29
267 查看
import flash.display.Sprite; import flash.display.BlendMode; import flash.display.BitmapData; import flash.display.Bitmap; import flash.events.MouseEvent; import flash.geom.Matrix; import flash.geom.ColorTransform; import flash.text.TextField; import flash.utils.ByteArray; import flash.geom.Rectangle; var mc:Sprite = new mc_link(); var btp:BitmapData = new BitmapData(w, h); btp.draw(mc); var bt:Bitmap = new Bitmap(btp); addChild(bt); var isDrawing:Boolean; //定义擦除画笔的宽度 var penW:int = 15; this.stage.addEventListener(MouseEvent.MOUSE_DOWN, downHandle); this.stage.addEventListener(MouseEvent.MOUSE_UP, upHandle); this.stage.addEventListener(MouseEvent.MOUSE_MOVE, moveHandle); function downHandle(e:MouseEvent):void{ if(bt.hitTestPoint(this.mouseX, this.mouseY)){ isDrawing = true; } } function upHandle(e:MouseEvent):void{ isDrawing = false; } function moveHandle(e:MouseEvent):void{ if(!isDrawing)return; e.updateAfterEvent(); //擦除原理:使用空数据替换 var nullBtp:BitmapData = new BitmapData(penW, penW, true, 0x00000000); var byteArr:ByteArray = nullBtp.getPixels(nullBtp.rect); byteArr.position = 0; btp.setPixels(new Rectangle(bt.mouseX, bt.mouseY, penW, penW), byteArr); //检测是否完全擦除:btp.getColorBoundsRect(0xFF000000,0x00000000,false); }
另外一种方法是增加一个容器,在容器上面绘画,然后组合起来,结果可能擦除不干净,并且检测不到是否擦完:
btp.draw(drawMc, new Matrix(), new ColorTransform(), BlendMode.ERASE);
相关文章推荐
- [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
- [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
- URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
- AjaxPanel自定义控件实现页面无刷新数据交互(做了个示例程序, 效果确实比较Cool, 用法非常简单!
- bitmap与桶方式对1000万数据进行排序(转+自己实现理解)
- Afinal数据库模块的实现准备(一)_清除所有数据表
- Java中实现大批量导入数据到MySQL——LOAD DATA LOCAL INFILE
- jquery实现瀑布流效果 jquery下拉加载新数据
- AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
- [原创]将TDC进行到底(2):实现数据的刷新(只刷新表格数据)|并欣赏将TDC和StedyMenu结合的效果
- Agularjs妙用双向数据绑定实现手风琴效果
- [AS3]BitmapBytes类-实现BitmapData与ByteArray(Base64)之间互转功能
- GridView 数据行实现光棒效果
- 使用 Oracle Datapump API 实现数据导出
- ListView结合DataPager实现分页的功能(数据绑定时)
- flash 游戏设计笔记:递归清除bitmapData
- 【转】使用 Entity Framework + ListView + DataPager 实现数据分页
- [给力原创]使用jQuery-ajax仿新浪微博通知折叠/显示效果,实现数据加载
- 利用userData实现客户端保存数据
- 五分钟学会使用spring-data-cassandra快速实现数据的访问