自由画矩形工具(主要运用了画矢量图的graphics类)

import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;

var sp:Sprite = new Sprite  ;
var qidianX:int = 0;//定义两个变量用来记录鼠标按下一瞬间的坐标,用来确定矩形的坐标和计算其宽高
var qidianY:int = 0;

 

 

stage.addEventListener(Event.ENTER_FRAME,onEnter);//为了确保画图的流畅性定义一个ENTER_FRAME事件,每帧都侦听,不过不定义也可以画出来
function onEnter(e:Event):void
{
 stage.addEventListener(MouseEvent.MOUSE_DOWN,onDown);//定义鼠标按下事件
 stage.addEventListener(MouseEvent.MOUSE_UP,onUp);//定义鼠标释放事件
}

function onDown(e:MouseEvent):void
{

 qidianX = mouseX;
 qidianY = mouseY;
 stage.addEventListener(MouseEvent.MOUSE_MOVE,onMove);//鼠标移动
}
function onMove(e:MouseEvent):void
{

 sp.graphics.clear();//清除未释放鼠标画的不必要的圆
 sp.graphics.beginFill(0x00ff00,1);//开始画并填充,给定一个透明度;
 sp.graphics.lineStyle(5,0x654235,0.8,true);//线边框的一些参数
 sp.graphics.drawRect(qidianX,qidianY,mouseX-qidianX,mouseY-qidianY);//画一个矩形;
 sp.graphics.endFill();//结束填充
    stage.addChild(sp);

}


function onUp(e:MouseEvent):void
{
//为了实现可以画多个矩形,在鼠标释放时赋值给另一个变量,并添加到舞台
 var sp1:Sprite=new Sprite();
 sp1.graphics.copyFrom(sp.graphics);//把画的矩形复制给sp1
 addChild(sp1);

 stage.removeEventListener(MouseEvent.MOUSE_MOVE,onMove);//移除鼠标移动事件结束画的过程

}

posted on 2012-10-18 00:31  笔墨丹青  阅读(718)  评论(0)    收藏  举报

导航