1. package com{
  2. import flash.display.MovieClip;
  3. import flash.display.SimpleButton;
  4. import flash.events.MouseEvent;
  5. import flash.display.Shape;
  6. import flash.geom.ColorTransform;
  7. import flash.geom.Rectangle;
  8.  
  9. public class Drow extends MovieClip {
  10.  
  11. private var emptyMc:MovieClip;
  12. private var blackboard:MovieClip;
  13. private var thisMc:MovieClip;
  14. private var shape:Shape;
  15. private var colorNum:Number
  16. public function Drow(_emptyMc:MovieClip,_thisMc:MovieClip,_blackboard:MovieClip) {
  17. emptyMc=_emptyMc;
  18. thisMc=_thisMc;
  19. blackboard=_blackboard;
  20. }
  21. private var penBtn:SimpleButton;
  22. private var revokeBtn:SimpleButton;
  23. private var eraserBtn:SimpleButton;
  24. public function toolFun(_penBtn:SimpleButton,_revokeBtn:SimpleButton,_eraserBtn:SimpleButton) {
  25. penBtn=_penBtn;
  26. revokeBtn=_revokeBtn;
  27. eraserBtn=_eraserBtn;
  28. eraserBtn.addEventListener(MouseEvent.CLICK,onClick);
  29. revokeBtn.addEventListener(MouseEvent.CLICK,onClick);
  30. penBtn.addEventListener(MouseEvent.CLICK,onClick);
  31. }
  32. private function onClick(e:MouseEvent) {
  33.  
  34. var str:String=e.target.name;
  35. if (str=="penBtn") {
  36. if (penBtn.visible==true) {
  37. colorNum=0
  38. penBtn.visible=false;
  39. blackboard.addEventListener(MouseEvent.MOUSE_DOWN,downFun);
  40. } else {
  41. penBtn.visible=true;
  42. blackboard.removeEventListener(MouseEvent.MOUSE_DOWN,downFun);
  43. }
  44. } else if (str=="revokeBtn") {
  45. if(emptyMc.numChildren-1>=0)
  46. emptyMc.removeChildAt(emptyMc.numChildren-1);
  47. } else if (str=="eraserBtn") {
  48. if (eraserBtn.visible==true) {
  49. eraserBtn.visible=false;
  50. penBtn.visible=true;
  51. colorNum=0xFFFFFF
  52. } else {
  53. eraserBtn.visible=true;
  54. }
  55. }
  56.  
  57. }
  58. private function downFun(e:MouseEvent) {
  59.  
  60. shape=new Shape()
  61. emptyMc.addChild(shape)
  62. shape.graphics.clear();
  63. shape.graphics.lineStyle(5,colorNum);
  64. shape.graphics.moveTo(mouseX,mouseY);
  65. blackboard.addEventListener(MouseEvent.MOUSE_MOVE,moveFun);
  66. blackboard.addEventListener(MouseEvent.MOUSE_UP,upFun);
  67. }
  68. private function moveFun(e:MouseEvent) {
  69. shape.graphics.lineTo(mouseX,mouseY);
  70. e.updateAfterEvent();
  71. }
  72. private function upFun(e:MouseEvent) {
  73. blackboard.removeEventListener(MouseEvent.MOUSE_MOVE,moveFun);
  74. blackboard.removeEventListener(MouseEvent.MOUSE_UP,upFun);
  75. }
  76.  
  77. }
  78.  
  79. }

as3.0划线带撤销功能的更多相关文章

  1. [ActionScript 3.0] AS3.0 涂鸦及擦除功能,撤销重做步骤记录实例

    package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMo ...

  2. [AIR] AS3.0设置屏保功能

    package com.controls { import flash.desktop.NativeApplication; import flash.events.Event; import fla ...

  3. js简易计算器底层运算逻辑(带撤销功能)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. 百度地图API 批量添加 带检索功能的信息窗口

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. [AS3]as3画笔实例实现橡皮擦功能源代码

    [AS3]as3画笔实例实现橡皮擦功能源代码 //主容器 var main:Sprite = new Sprite(); main.mouseEnabled = false; addChild(mai ...

  6. GridView使用自带分页功能时分页方式及样式PagerStyle

    // 转向地址:http://www.bubuko.com/infodetail-412562.html GridView分页,使用自带分页功能,类似下面样式: 在aspx页面中,GridView上的 ...

  7. 调用Android自带日历功能(日历列表单、添加一个日历事件)

    调用Android自带日历功能  觉得这篇文章不错,转载过来. 转载:http://blog.csdn.net/djy1992/article/details/9948393 Android手机配备有 ...

  8. SSIS从理论到实战,再到应用(6)----SSIS的自带日志功能

    原文:SSIS从理论到实战,再到应用(6)----SSIS的自带日志功能 上期回顾: SSIS从理论到实战,再到应用(5)----流程控制之Foreach循环 博主最近新负责了一个ssis大项目的架构 ...

  9. As3.0 类的【枚举】

    As3.0 类的枚举   “枚举”是您创建的一些自定义数据类型,用于封装一小组值.ActionScript 3.0 并不支持具体的枚举工具,这与 C++ 使用 enum 关键字或 Java 使用 En ...

随机推荐

  1. django之signal机制分析

    django的signal在djangobb中的使用: from django.db.models.signals import post_save from django.dispatch impo ...

  2. ABAP-数据引用

    *&---------------------------------------------------------------------* *& Report ZRICO_TES ...

  3. 正则前面的 (?i) (?s) (?m) (?is) (?im)

    (?i) 表示所在位置右侧的表达式开启忽略大小写模式(?s) 表示所在位置右侧的表达式开启单行模式(?m) 表示所在位置右侧的表示式开启指定多行模式(?is) 更改句点字符 (.) 的含义,以使它与每 ...

  4. Linux后门入侵检测工具

    一.rootkit简介 rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现 ...

  5. Linux基本命令(新手入门使用)

    Linux常用基本命令主要包括目录操作命令.文件操作命令.文件查看命令.磁盘管理命令.用户管理命令.系统管理命令等. 目录操作命令:cd.ls.mkdir.pwd.rmdir 文件操作命令:cp.mv ...

  6. IIS8.0 部署WCF Services

    今天在Win 8的IIS上部署WCF Services,访问SVC文件时出现找不到处理程序的错误,以前遇到这个问题时都是尝试通过注册asp.net的方式处理一下,但是在Win8下这招不灵了,出现如下提 ...

  7. EF 控制code-first生成的数据库表名的单复数

    原地址:https://blog.csdn.net/winnyrain/article/details/51248410 在Code-First中,默认生成的数据库表的名称为类型的复数形式,如Mode ...

  8. ABAP 编程

    ABAP Programming Language 的内容主要有: 1.数据类型与数据对象 2.内表和内表结构(Internal Table) 3.数据流控制语句 4.模块化(Modularizati ...

  9. 函数式编程语言(Functional Program Language)

    (一) 什么是函数编程语言 简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论. 是一种编程典范, ...

  10. sse实例

    一.前台 <script>//D:\wamp\www\node\xiangmuer\views\main // var source = new EventSource('http://1 ...