[AS3]as3畫筆實例實現橡皮擦功能源代碼orm
//主容器 var main:Sprite = new Sprite(); main.mouseEnabled = false; addChild(main) //臨時容器(全部操做都將先畫在臨時容器裏,再進行"畫"或"擦") var mc:Sprite = new Sprite() main.addChild(mc) //保存最終畫出來的內容的bitmapdata var content:BitmapData = new BitmapData(550,400,true,0x00FFFFFF); //把content顯示出來 var show:Bitmap = new Bitmap(content) main.addChildAt(show,0) //默認選中畫筆 var action:Number = 0 txt.text = "當前選中:畫筆" mc_move.addEventListener(MouseEvent.MOUSE_DOWN,startDraw) a.addEventListener(MouseEvent.CLICK,changeAction) b.addEventListener(MouseEvent.CLICK,changeAction) function changeAction(e:MouseEvent):void { if(e.target.name == "a") { action = 0 txt.text = "當前選中:畫筆" mc.visible = true }else { action = 1 txt.text = "當前選中:橡皮" mc.visible = false } } function startDraw(e:MouseEvent):void { mc.graphics.lineStyle(20,cp.selectedColor); mc.graphics.moveTo(mouseX,mouseY); mc_move.addEventListener(MouseEvent.MOUSE_MOVE,drawing); stage.addEventListener(MouseEvent.MOUSE_UP,stopDraw); } function stopDraw(e:MouseEvent):void { if(action!=1)content.draw(mc,new Matrix(),new ColorTransform(),BlendMode.NORMAL,new Rectangle(0,0,550,400)) mc.graphics.clear() mc_move.removeEventListener(MouseEvent.MOUSE_MOVE,drawing); stage.removeEventListener(MouseEvent.MOUSE_UP,stopDraw); } function drawing(e:MouseEvent):void { mc.graphics.lineTo(mouseX,mouseY) if(action==1)content.draw(mc,new Matrix(),new ColorTransform(),BlendMode.ERASE) e.updateAfterEvent() }
[AS3]as3畫筆實例實現橡皮擦功能源代碼blog