开启左侧

as3.0做画板如何实现按下直线按钮画直线按下圆按钮画圆代码

[复制链接]
你是我的牵挂 发表于 2014-11-1 21:51:49 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
as3.0做画板如何实现按下直线按钮画直线按下圆按钮画圆代码
欢迎大家多发帖,参与讨论,增进彼此了解。

精彩评论11

正序浏览
etthink 发表于 2014-11-1 21:56:33 | 显示全部楼层
graphics类的使用,请提供自己做的源文件以供修改实现
欢迎大家多发帖,参与讨论,增进彼此了解。
你是我的牵挂 发表于 2014-11-1 21:59:21 | 显示全部楼层
a.addEventListener(MouseEvent.CLICK, doSomething);
b.addEventListener(MouseEvent.CLICK, doSomething);
c.addEventListener(MouseEvent.CLICK, doSomething);
function doSomething(evt:MouseEvent):void
{
        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);
        if (evt.currentTarget.name == "a")
        {




                _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;
                }


                trace("click button a");
        }
        else if (evt.currentTarget.name == "b")
        {




                var _color:Number = 0xFF0000;
                var zx:int = 1;
                var ys_x:Number;
                var ys_y:Number;
                huabu.addEventListener( MouseEvent.MOUSE_DOWN, yi );
                huabu.addEventListener( MouseEvent.MOUSE_MOVE,er);
                huabu.addEventListener( MouseEvent.MOUSE_UP, san );
                stage.addEventListener( MouseEvent.MOUSE_UP,san );
                function yi( event:MouseEvent ):void
                {
                        ys_x = mouseX;
                        ys_y = mouseY;
                        _drawing = true;
                }
                function er( event:MouseEvent ):void
                {
                        if (_drawing)
                        {
                                huabu.removeChild(quxian);
                                quxian=new Sprite();
                                quxian.graphics.lineStyle( zx, _color );
                                quxian.graphics.moveTo(ys_x,ys_y);
                                quxian.graphics.lineTo(mouseX,mouseY);
                                huabu.addChild(quxian);
                        }
                }
                function san( event:MouseEvent ):void
                {
                        quxian=new Sprite();
                        huabu.addChild(quxian);
                        //没有以上两句,只能画一条直线
                        _drawing = false;
                }


                trace("click button b");
        }
        else if (evt.currentTarget.name == "c")
        {


                var kaishi_x:Number;
                var kaishi_y:Number;
                var w:Number;
                var h:Number;
                var _max:Number;
                stage.addEventListener( MouseEvent.MOUSE_DOWN, star );
                stage.addEventListener( MouseEvent.MOUSE_MOVE,mov);
                stage.addEventListener( MouseEvent.MOUSE_UP, stopD );
                function star( event:MouseEvent ):void
                {
                        kaishi_x = mouseX;
                        kaishi_y = mouseY;
                        _drawing = true;
                }
                function mov( event:MouseEvent ):void
                {
                        if (_drawing)
                        {
                                w = mouseX - kaishi_x;
                                h = mouseY - kaishi_y;
                                removeChild(quxian);
                                quxian=new Sprite();
                                quxian.graphics.lineStyle( 2, 0xFF0000 );
                                quxian.graphics.drawEllipse(kaishi_x,kaishi_y,w,h);
                                addChild(quxian);
                        }
                }
                function stopD( event:MouseEvent ):void
                {
                        quxian=new Sprite();
                        addChild(quxian);
                        _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(quxian);
                                        quxian=new Sprite();
                                        quxian.graphics.lineStyle( 2, 0xFF0000 );
                                        quxian.graphics.drawEllipse(kaishi_x,kaishi_y,w,h);
                                        addChild(quxian);
                                        _drawing = false;
                                }
                        }
                }

                trace("click button c");
        }
}
欢迎大家多发帖,参与讨论,增进彼此了解。
 楼主| 你是我的牵挂 发表于 2014-11-1 22:03:38 | 显示全部楼层
按下画圆按钮画圆再按下直线按钮圆也画上了不知什么原因,求您帮助解答
欢迎大家多发帖,参与讨论,增进彼此了解。
 楼主| etthink 发表于 2014-11-1 22:04:50 | 显示全部楼层
你是我的牵挂 发表于 2014-11-1 21:59
a.addEventListener(MouseEvent.CLICK, doSomething);
b.addEventListener(MouseEvent.CLICK, doSomething ...

源文件,fla文件,不是指代码


学教育技术,上教育技术论坛!http://www.etthink.com
你是我的牵挂 发表于 2014-11-1 22:16:40 | 显示全部楼层

欢迎大家多发帖,参与讨论,增进彼此了解。
 楼主| 你是我的牵挂 发表于 2014-11-1 22:18:03 | 显示全部楼层
huaban.fla (7.14 KB, 下载次数: 86)


欢迎大家多发帖,参与讨论,增进彼此了解。
 楼主| 你是我的牵挂 发表于 2014-11-2 19:39:38 | 显示全部楼层
下载了别人的一段代码测试时出现这样的错误:
C:\Users\Administrator.CNN88-20140711E\Desktop\DrawTools.as,34 行        1119: 访问可能未定义的属性 buttonMode (通过 static 类型 flash.display:SimpleButton 引用)。
C:\Users\Administrator.CNN88-20140711E\Desktop\DrawTools.as,35 行        1119: 访问可能未定义的属性 buttonMode (通过 static 类型 flash.display:SimpleButton 引用)。
C:\Users\Administrator.CNN88-20140711E\Desktop\DrawTools.as,36 行        1119: 访问可能未定义的属性 buttonMode (通过 static 类型 flash.display:SimpleButton 引用)。
C:\Users\Administrator.CNN88-20140711E\Desktop\DrawTools.as,37 行        1119: 访问可能未定义的属性 buttonMode (通过 static 类型 flash.display:SimpleButton 引用)。
C:\Users\Administrator.CNN88-20140711E\Desktop\DrawTools.as,38 行        1119: 访问可能未定义的属性 buttonMode (通过 static 类型 flash.display:SimpleButton 引用)。
C:\Users\Administrator.CNN88-20140711E\Desktop\DrawTools.as,39 行        1119: 访问可能未定义的属性 buttonMode (通过 static 类型 flash.display:SimpleButton 引用)。
rgumentError: Error #1063: DrawTools() 的参数数量不匹配。应该有 1 个,当前为 0 个
  希望孙老师给改一改。
欢迎大家多发帖,参与讨论,增进彼此了解。
 楼主| 你是我的牵挂 发表于 2014-11-2 19:40:56 | 显示全部楼层
DrawTools.as (6.31 KB, 下载次数: 88)


欢迎大家多发帖,参与讨论,增进彼此了解。
 楼主| etthink 发表于 2014-11-1 21:51:50 | 显示全部楼层

已经解决了前面的画圆的问题了: AS画线与圆2.fla (7.98 KB, 下载次数: 86)

点评

非常感谢您的帮助给解决了一个大难题。能把第二个问题给解决吗  发表于 2014-11-3 19:55
学教育技术,上教育技术论坛!http://www.etthink.com
etthink 发表于 2014-11-30 06:26:56 来自手机 | 显示全部楼层
这个是没创建实例吧wechat:lang_wechat_threadmessage
欢迎大家多发帖,参与讨论,增进彼此了解。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

推荐阅读更多+
会员达人更多+
广告位

最新信息

更多+

关注我们:教育技术人

官方微信

官方微博

教育技术热线:

13955453231

学教育技术,上教育技术论坛!

教育技术论坛征稿范围:教育技术应用案例、教程文章、优秀作品等。

Email:sf@etthink.com

Copyright   ©2007-2026  应用思考-教育技术论坛  Powered by©Discuz!  技术支持:且行资源    ( 皖ICP备10014945号-4 )