博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【AS3代码】小画板升级版(带重绘回放和清空功能)
阅读量:7089 次
发布时间:2019-06-28

本文共 3334 字,大约阅读时间需要 11 分钟。

生成按钮类

 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();
        }
    }

转载地址:http://obfql.baihongyu.com/

你可能感兴趣的文章
iOS9.3激活失败 疑似激活服务器被挤爆
查看>>
最低调的恶意软件之Dimnie瞄准GitHub开发人员
查看>>
运营商发展大数据的四大误区
查看>>
Facebook新的图搜索?效果不是很理想
查看>>
Google公司致力发展企业云市场
查看>>
日媒称黑客组织瞄上中企:目标企业被迫停牌3年
查看>>
Fortinet实验室提醒用户注意Office高危漏洞
查看>>
10年后全球智慧城市市场规模将达到3.5万亿美元
查看>>
雅虎高管解读财报 将在今年完成阿里资产剥离
查看>>
大数据时代安全难题:个人信息保护立法紧迫
查看>>
国家发改委:资金支持大数据重大建设项目
查看>>
青海省公安厅部署科达至臻高清视频会议系统
查看>>
最新的swoole视频上线
查看>>
说一下你的思考过程 Tell me what you think(编程测试)
查看>>
勒索病毒后的反思:开放的NFV/SDN安全吗?
查看>>
Appium滑动问题研究
查看>>
美国国家情报总监个人邮箱被黑
查看>>
[Maven + Gem]为大型企业打造自动化测试工具
查看>>
为什么说联想不可能放弃摩托罗拉品牌?
查看>>
雅虎股东致信董事会:别再浪费资本了
查看>>