再学AS3(五):鼠绘 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

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

    (1):曲线

   

   

    知识点:

    1、添加鼠标监听事件MouseEvent;

    2、规定画布大小;

    3、moveTo和lineTo;

    4、绘制开始与结束判断,

再学AS3(五):鼠绘

    代码:

    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,20,510,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, startDrawing );

    huabu.addEventListener( MouseEvent.MOUSE_MOVE,moving);

    huabu.addEventListener( MouseEvent.MOUSE_UP, 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键绘制正圆,

电脑资料

再学AS3(五):鼠绘》(https://www.unjs.com)。

    难点:

    按下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, startDrawing );

    stage.addEventListener( MouseEvent.MOUSE_MOVE,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,kaishi_y,w,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, startDrawing );

    stage.addEventListener( MouseEvent.MOUSE_MOVE,moving);

    stage.addEventListener( MouseEvent.MOUSE_UP, 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,w,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,yx_y,w,h);

    addChild(_drawrect);

    }

    }

    }

最新文章