民浩

 

[AS3]as3画笔实例实现橡皮擦功能源代码

[AS3]as3画笔实例实现橡皮擦功能源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//主容器
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画笔实例实现橡皮擦功能源代码

posted on   民浩  阅读(860)  评论(0编辑  收藏  举报

导航

统计

点击右上角即可分享
微信分享提示