吾知网

标题: as3画线及橡皮擦功能的实现 [打印本页]

作者: jekeyhui99    时间: 2015-11-4 12:53
标题: as3画线及橡皮擦功能的实现
//主容器
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()
}






欢迎光临 吾知网 (http://5g99.com/bbs/) Powered by Discuz! X3.2