加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash as3 鼠标绘图

发布时间:2020-12-15 06:27:20 所属栏目:百科 来源:网络整理
导读:本文用AS3分别描绘了曲线、直线、圆、椭圆和矩形5种绘制方法,希望能给大家带来帮助! (1):曲线 知识点: 1、添加鼠标监听事件MouseEvent; 2、规定画布大小; 3、moveTo和lineTo; 4、绘制开始与结束判断。 代码: var huabu:Sprite=new Sprite(); huabu

本文用AS3分别描绘了曲线、直线、圆、椭圆和矩形5种绘制方法,希望能给大家带来帮助!

(1):曲线

知识点:
1、添加鼠标监听事件MouseEvent;
2、规定画布大小;
3、moveTo和lineTo;
4、绘制开始与结束判断。

代码:

var huabu:Sprite=new Sprite(); 
huabu.graphics.beginFill(0xFFFFFF); 
huabu.graphics.drawRect(20,20,510,360); 
huabu.graphics.endFill(); 
addChild(huabu); 
var _drawing:Boolean; 
var quxian:Sprite=new Sprite(); 
quxian.graphics.lineStyle( 2,0xFF0000 ); 
huabu.addChild(quxian); 
_drawing = false; 
huabu.addEventListener( MouseEvent.MOUSE_DOWN,startDrawing ); 
huabu.addEventListener( MouseEvent.MOUSE_MOVE,moving); 
huabu.addEventListener( MouseEvent.MOUSE_UP,stopDrawing ); 
stage.addEventListener(MouseEvent.MOUSE_UP,stopDrawing); 
function startDrawing( event:MouseEvent ):void { 
quxian.graphics.moveTo( mouseX,mouseY ); 
_drawing = true; 
} 
function moving( event:MouseEvent ):void { 
if ( _drawing ) { 
  quxian.graphics.lineTo( mouseX,mouseY ); 
} 
} 
function stopDrawing( event:MouseEvent ):void { 
_drawing = false; 
}

(2):直线

知识点:
1、添加鼠标监听事件MouseEvent;
2、规定画布大小;
3、moveTo和lineTo;
4、绘制开始与结束判断。
难点:
绘制多条直线

代码:

var huabu:Sprite=new Sprite(); 
huabu.graphics.beginFill(0xFFFFFF); 
huabu.graphics.drawRect(20,360); 
huabu.graphics.endFill(); 
addChild(huabu); 
var _drawing:Boolean=false; 
var zhixian:Sprite=new Sprite(); 
huabu.addChild(zhixian); 
var _color:Number=0xFF0000; 
var zx:int=1; 
var ys_x:Number; 
var ys_y:Number; 
huabu.addEventListener( MouseEvent.MOUSE_DOWN,stopDrawing ); 
stage.addEventListener( MouseEvent.MOUSE_UP,stopDrawing ); 
function startDrawing( event:MouseEvent ):void { 
ys_x=mouseX; 
ys_y=mouseY; 
_drawing = true; 
} 
function moving( event:MouseEvent ):void { 
if (_drawing) { 
  huabu.removeChild(zhixian); 
  zhixian=new Sprite(); 
  zhixian.graphics.lineStyle( zx,_color ); 
  zhixian.graphics.moveTo(ys_x,ys_y); 
  zhixian.graphics.lineTo(mouseX,mouseY); 
  huabu.addChild(zhixian); 
} 
} 
function stopDrawing( event:MouseEvent ):void { 
zhixian=new Sprite(); 
huabu.addChild(zhixian); 
//没有以上两句,只能画一条直线 
_drawing = false; 
}

(3):圆


知识点:
1、添加鼠标监听事件MouseEvent;
2、绘制过程中显示半径(两点间的距离Point.distance(坐标1,坐标2));
3、drawCircle、moveTo和lineTo;
4、绘制开始与结束判断。
难点:
绘制多个圆

代码:

var _drawing:Boolean; 
var yuan:Sprite=new Sprite(); 
addChild(yuan); 
var banjing:Sprite=new Sprite(); 
addChild(banjing); 
var yuanxin_x:Number; 
var yuanxin_y:Number; 
var zuobiao1:Point; 
var zuobiao2:Point; 
var bj:Number; 
_drawing = false; 
stage.addEventListener( MouseEvent.MOUSE_DOWN,startDrawing ); 
stage.addEventListener( MouseEvent.MOUSE_MOVE,yd); 
stage.addEventListener( MouseEvent.MOUSE_UP,stopDrawing ); 
function startDrawing( event:MouseEvent ):void { 
yuanxin_x=mouseX;//鼠标按下的位置就是圆心的位置 
yuanxin_y=mouseY; 
_drawing = true; 
} 
function yd( event:MouseEvent ):void { 
if ( _drawing ) { 
  zuobiao1 = new Point(yuanxin_x,yuanxin_y); 
  zuobiao2 = new Point(mouseX,mouseY); 
  bj= Point.distance(zuobiao1,zuobiao2);//显示两点之间的距离即为半径 
  removeChild(yuan); 
  yuan=new Sprite(); 
  yuan.graphics.lineStyle( 2,0xFF0000 ); 
  yuan.graphics.drawCircle(yuanxin_x,yuanxin_y,bj); 
  addChild(yuan); 
  removeChild(banjing); 
  banjing=new Sprite(); 
  banjing.graphics.lineStyle(2,0xFF0000,0.5); 
  banjing.graphics.moveTo(yuanxin_x,yuanxin_y); 
  banjing.graphics.lineTo(mouseX,mouseY); 
  addChild(banjing); 
} 
} 
function stopDrawing( event:MouseEvent ):void { 
removeChild(banjing);//绘制结束时半径线消失 
banjing=new Sprite();//每次画圆过程中都显示半径 
addChild(banjing); 
yuan=new Sprite();//可绘制多个圆 
addChild(yuan); 
  
_drawing = false; 
}

(4):椭圆


知识点:
1、添加鼠标监听事件MouseEvent和键盘监听事件KeyboardEvent;
2、椭圆的宽与高;
3、drawEllipse;
4、绘制开始与结束判断;
5、按下Shift键绘制正圆。
难点:
按下Shift键绘制正圆

代码:

var _drawing:Boolean=false; 
var ellipse:Sprite=new Sprite(); 
addChild(ellipse); 
var kaishi_x:Number; 
var kaishi_y:Number; 
var w:Number; 
var h:Number; 
var _max:Number; 
stage.addEventListener( MouseEvent.MOUSE_DOWN,moving); 
stage.addEventListener( MouseEvent.MOUSE_UP,stopDrawing ); 
function startDrawing( event:MouseEvent ):void { 
kaishi_x=mouseX; 
kaishi_y=mouseY; 
_drawing = true; 
} 
function moving( event:MouseEvent ):void { 
if (_drawing) { 
  w=mouseX-kaishi_x; 
  h=mouseY-kaishi_y; 
  removeChild(ellipse); 
  ellipse=new Sprite(); 
  ellipse.graphics.lineStyle( 2,0xFF0000 ); 
  ellipse.graphics.drawEllipse(kaishi_x,kaishi_y,w,h); 
  addChild(ellipse); 
} 
} 
function stopDrawing( event:MouseEvent ):void { 
ellipse=new Sprite(); 
addChild(ellipse); 
_drawing = false; 
} 
stage.focus=this; 
stage.addEventListener(KeyboardEvent.KEY_DOWN,shift); 
function shift(event:KeyboardEvent):void { 
if (event.charCode==0) { 
  if (_drawing) { 
   w=mouseX-kaishi_x; 
   h=mouseY-kaishi_y; 
   _max=Math.max(Math.abs(w),Math.abs(h)); 
   if (w<0 && h<0) { 
    w=-_max; 
    h=-_max; 
   } 
   if (w>0 && h>0) { 
    w=_max; 
    h=_max; 
   } 
   if (w<0 && h>0) { 
    w=-_max; 
    h=_max; 
   } 
   if (w>0 && h<0) { 
    w=_max; 
    h=-_max; 
   } 
   removeChild(ellipse); 
   ellipse=new Sprite(); 
   ellipse.graphics.lineStyle( 2,0xFF0000 ); 
   ellipse.graphics.drawEllipse(kaishi_x,h); 
   addChild(ellipse); 
  } 
} 
}

(5):矩形


知识点:
1、添加鼠标监听事件MouseEvent和键盘监听事件KeyboardEvent;
2、椭圆的宽与高;
3、drawRect;
4、绘制开始与结束判断;
5、按下Shift键绘制正方形。
难点:
按下Shift键绘制正方形

代码:

var _drawing:Boolean=false; 
var _drawrect:Sprite=new Sprite(); 
addChild(_drawrect); 
var yx_x:Number; 
var yx_y:Number; 
var w:Number; 
var h:Number; 
var _max:Number; 
stage.addEventListener( MouseEvent.MOUSE_DOWN,stopDrawing ); 
function startDrawing( event:MouseEvent ):void { 
yx_x=mouseX; 
yx_y=mouseY; 
_drawing = true; 
} 
function moving( event:MouseEvent ):void { 
if (_drawing) { 
  w=mouseX-yx_x; 
  h=mouseY-yx_y; 
  removeChild(_drawrect); 
  _drawrect=new Sprite(); 
  _drawrect.graphics.lineStyle( 2,0xFF0000 ); 
  _drawrect.graphics.drawRect(yx_x,yx_y,h); 
  addChild(_drawrect); 
} 
} 
function stopDrawing( event:MouseEvent ):void { 
_drawrect=new Sprite(); 
addChild(_drawrect); 
_drawing = false; 
} 
stage.focus=this; 
stage.addEventListener(KeyboardEvent.KEY_DOWN,shift); 
function shift(event:KeyboardEvent):void { 
if (event.charCode==0) { 
  if (_drawing) { 
   _max=Math.max(Math.abs(w),Math.abs(h)); 
   if (w<0 && h<0) { 
    w=-_max; 
    h=-_max; 
   } 
   if (w>0 && h>0) { 
    w=_max; 
    h=_max; 
   } 
   if (w<0 && h>0) { 
    w=-_max; 
    h=_max; 
   } 
   if (w>0 && h<0) { 
    w=_max; 
    h=-_max; 
   } 
   removeChild(_drawrect); 
   _drawrect=new Sprite(); 
   _drawrect.graphics.lineStyle( 2,0xFF0000 ); 
   _drawrect.graphics.drawRect(yx_x,h); 
   addChild(_drawrect); 
  } 
} 
}

原文地址: http://www.68design.net/Web-Guide/Flash/53258-1.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读