之前有网站转载过blog里一篇
使用bitmapData简单实现涂鸦中的橡皮功能
由于里边没介绍..其实代码是as2的..后来一些网站误传为as3的代码..
今天把之前的代码改成了as3的代码..重新发上来..有需要的朋友可以看看...
PS:直接另存了以前的源码..所以代码还是写帧里...
01.
//主容器
02.
var
main:Sprite =
new
Sprite();
03.
main.mouseEnabled =
false
;
04.
addChild(main)
05.
//临时容器(所有操作都将先画在临时容器里,再进行"画"或"擦")
06.
var
mc:Sprite =
new
Sprite()
07.
main.addChild(mc)
08.
//保存最终画出来的内容的bitmapdata
09.
var
content:BitmapData =
new
BitmapData(
550
,
400
,
true
,
0x00FFFFFF
);
10.
//把content显示出来
11.
var
show:Bitmap =
new
Bitmap(content)
12.
main.addChildAt(show,
0
)
13.
14.
//默认选中画笔
15.
var
action:
Number
=
0
16.
txt.text =
"当前选中:画笔"
17.
18.
mc_move.addEventListener(MouseEvent.MOUSE_DOWN,startDraw)
19.
a.addEventListener(MouseEvent.CLICK,changeAction)
20.
b.addEventListener(MouseEvent.CLICK,changeAction)
21.
function
changeAction(e:MouseEvent):
void
22.
{
23.
if
(e.target.name ==
"a"
)
24.
{
25.
action =
0
26.
txt.text =
"当前选中:画笔"
27.
mc.visible =
true
28.
}
else
29.
{
30.
action =
1
31.
txt.text =
"当前选中:橡皮"
32.
mc.visible =
false
33.
}
34.
}
35.
function
startDraw(e:MouseEvent):
void
36.
{
37.
mc.graphics.lineStyle(
20
,cp.selectedColor);
38.
mc.graphics.moveTo(mouseX,mouseY);
39.
mc_move.addEventListener(MouseEvent.MOUSE_MOVE,drawing);
40.
stage.addEventListener(MouseEvent.MOUSE_UP,stopDraw);
41.
}
42.
function
stopDraw(e:MouseEvent):
void
43.
{
44.
if
(action!=
1
)content.draw(mc,
new
Matrix(),
new
ColorTransform(),BlendMode.NORMAL,
new
Rectangle(
0
,
0
,
550
,
400
))
45.
mc.graphics.clear()
46.
mc_move.removeEventListener(MouseEvent.MOUSE_MOVE,drawing);
47.
stage.removeEventListener(MouseEvent.MOUSE_UP,stopDraw);
48.
}
49.
function
drawing(e:MouseEvent):
void
50.
{
51.
mc.graphics.lineTo(mouseX,mouseY)
52.
if
(action==
1
)content.draw(mc,
new
Matrix(),
new
ColorTransform(),BlendMode.ERASE)
53.
e.updateAfterEvent()
54.
}
//原贴地址