吾知网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6175|回复: 0
打印 上一主题 下一主题

as3画线及橡皮擦功能的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2015-11-4 12:53:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//主容器
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()
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|吾知网 ( 粤ICP备13013563号-1 )

GMT+8, 2024-12-24 03:48 , Processed in 1.078125 second(s), 10 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表