zoukankan      html  css  js  c++  java
  • 【AS3代码】小画板升级版(带重绘回放和清空功能)

    生成按钮类

     package com.ui

    {
        import flash.display.SimpleButton;
        
        import org.osmf.layout.AbsoluteLayoutFacet;

        public class Button extends SimpleButton
        {
            public function Button(thistext:String):void
            {
                var arr:Array = init(thistext);
                
                super(arr[0],arr[1],arr[2],arr[2]);        //调用父类的构造器函数
            }
            private function init(thistext:String):Array
            {
                var atext:Text = new Text(thistext);
                var btext:Text = new Text(thistext);
                var ctext:Text = new Text(thistext);
                
                var a:Mysprite = new Mysprite(0xffff00);
                var b:Mysprite = new Mysprite(0x00ff00);
                var c:Mysprite = new Mysprite(0x0000ff);
                
                a.addChild(atext);
                b.addChild(btext);
                c.addChild(ctext);
                
                var abc:Array = [a, b, c];
                return abc;
            }
        }
    }

     绘图类

     package com.ui

    {
        import flash.display.Sprite;

        public class Mysprite extends Sprite
        {
            public function Mysprite(col:uint):void
            {
                init(col);
            }
            private function init(col:uint):void
            {
                this.graphics.beginFill(col);
                this.graphics.drawRect(0,0,100,30);
                this.graphics.endFill();
            }
        }
    }

     文档类

    package
    {
        import com.ui.Button;
        
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
        
        public class Main extends Sprite
        {        
            private var isdown:Boolean = false;
            private var oldx:Number;
            private var oldy:Number;
            private var ceng:Sprite;    //绘图层
            
            //---------------------------------------------
            
            private var dataarr:Array = new Array();    //记录鼠标位置的数组
            private var ci:uint = 0;                    //记录绘图时向数组内添加的次数
            private var    huici:uint;                        //记录回放时播放到数组内的哪一步
            private var a:Button;                        //重绘按钮
            private var b:Button;                        //清除按钮
            
            public function Main():void
            {
                init();
            }
            
            private function init():void
            {
                //创建2个按钮,并监听按钮点击事件
                a = new Button("重绘");
                a.x = 400;
                a.y = 300;
                b = new Button("清除");
                b.x = 400;
                b.y = 340;
                this.addChild(a);
                this.addChild(b);
                a.addEventListener(MouseEvent.CLICK,draw);
                b.addEventListener(MouseEvent.CLICK,clear);
                
                //创建绘制图层
                ceng = new Sprite();
                this.addChild(ceng);
                
                //监听鼠标的三种动作状态(按下,移动,抬起)
                this.stage.addEventListener(MouseEvent.MOUSE_DOWN, ondown);
                this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onmove);
                this.stage.addEventListener(MouseEvent.MOUSE_UP, onup);            
            }
            
            private function ondown(evt:MouseEvent):void
            {
                oldx = this.stage.mouseX;
                oldy = this.stage.mouseY;            
                
                if(a.hitTestPoint(this.stage.mouseX, this.stage.mouseY, true) || b.hitTestPoint(this.stage.mouseX, this.stage.mouseY, true))
                {
                    isdown = false;
                }
                else
                {
                    isdown = true;
                    dataarr[ci] = new Array(oldx, oldy);        //将按下去时的第一步坐标记录在回放数组里
                }
            }
            
            private function onmove(evt:MouseEvent):void
            {
                if(isdown == true)
                {
                    ci++;    //次数递增
                    ceng.graphics.lineStyle(2,0xff0000);
                    ceng.graphics.moveTo(oldx, oldy);
                    ceng.graphics.lineTo(stage.mouseX, stage.mouseY);
                    
                    oldx = stage.mouseX;
                    oldy = stage.mouseY;
                    dataarr[ci] = new Array(oldx, oldy);    //将绘制的每一步坐标都记录在回放数组中
                    
                }
            }
            
            private function onup(evt:MouseEvent):void
            {
                isdown = false;
            }
            
            //重绘
            private function draw(evt:MouseEvent):void
            {
                this.stage.addEventListener(Event.ENTER_FRAME,huizhi);
            }
            
            //执行回放
            private function huizhi(evt:Event):void
            {
                //如果绘制的次数小于数组的长度,则可继续回放
                //绘制时,起始值是0,假如绘制长度为100,所以绘制次数一定要小于总长度
                if(huici < (dataarr.length - 1))
                {
                    ceng.graphics.lineStyle(2,0x000000);
                    ceng.graphics.moveTo(dataarr[huici][0], dataarr[huici][1]);
                    huici++;
                    ceng.graphics.lineTo(dataarr[huici][0], dataarr[huici][1]);
                }
                else
                {
                    //将绘制次数清零
                    huici = 0;    
                    
                    //移除监听器
                    this.stage.removeEventListener(Event.ENTER_FRAME, huizhi); 
                }
            }
            
            //清除
            private function clear(evt:MouseEvent):void
            {
                ceng.graphics.clear();
            }
        }

  • 相关阅读:
    usb3.0 bMaxBurst最大支持多少个 这个描述符什么时候被读取
    盒式图|加置信椭圆的散点图|分组盒式图|分组散点图|马赛克图|
    协方差分析|随机区组设计|样本单位|样本容量|变异系数|片面误差|抽样误差|真实性|精密度|重复性|精确程度|计数数据|区间变量|离散型变量|数值变量
    试验指标|试验单位|均方|随机模型|固定模型|字母标记法|LSR|q检验|LSD|重复值|弥补缺失数据|可加性|平方根转换|对数转换|反正弦转化
    2×c列联表|多组比例简式|卡方检验|χ2检验与连续型资料假设检验
    显著水平|区间估计|假设检验|显著性|第一类错误|Ⅱ类错误|β错误|t检验|连续性矫正|二项分布的假设检验|样本百分率|
    估计量|估计值|矩估计|最大似然估计|无偏性|无偏化|有效性|置信区间|枢轴量|似然函数|伯努利大数定理|t分布|单侧置信区间|抽样函数|
    单因素方差分析
    左偏|有偏|中心极限定理|卡方分布|
    正交试验
  • 原文地址:https://www.cnblogs.com/kingfly/p/2486967.html
Copyright © 2011-2022 走看看