as3.0 橡皮功能2
package com{
import flash.display.MovieClip;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import flash.display.Shape;
import flash.geom.Matrix;
import flash.geom.ColorTransform;
import flash.geom.Rectangle;
import flash.display.BlendMode;
public class Drow extends MovieClip {
private var emptyMc:MovieClip;
private var bitmap:Bitmap;
private var bitmapD:BitmapData;
private var blackboard:MovieClip;
private var thisMc:MovieClip;
private var shape:Shape;
private var newMcArr:Array=[];
private var newMc:MovieClip;
public function Drow(_emptyMc:MovieClip,_thisMc:MovieClip,_blackboard:MovieClip) {
emptyMc=_emptyMc;
thisMc=_thisMc;
blackboard=_blackboard;
shape=new Shape()
;
bitmapD=new BitmapData(blackboard.width,blackboard.height,true,0);
bitmap=new Bitmap(bitmapD,"auto",true);
emptyMc.addChild(bitmap);
}
private var penBtn:SimpleButton;
private var revokeBtn:SimpleButton;
private var eraserBtn:SimpleButton;
public function toolFun(_penBtn:SimpleButton,_revokeBtn:SimpleButton,_eraserBtn:SimpleButton) {
penBtn=_penBtn;
revokeBtn=_revokeBtn;
eraserBtn=_eraserBtn;
eraserBtn.addEventListener(MouseEvent.CLICK,onClick);
revokeBtn.addEventListener(MouseEvent.CLICK,onClick);
penBtn.addEventListener(MouseEvent.CLICK,onClick);
}
private function onClick(e:MouseEvent) {
var str:String=e.target.name;
if (str=="penBtn") {
if (penBtn.visible==true) {
penBtn.visible=false;
blackboard.addEventListener(MouseEvent.MOUSE_DOWN,downFun);
} else {
penBtn.visible=true;
blackboard.removeEventListener(MouseEvent.MOUSE_DOWN,downFun);
}
} else if (str=="revokeBtn") {
trace(emptyMc.numChildren);
emptyMc.removeChildAt(emptyMc.numChildren-1);
} else if (str=="eraserBtn") {
if (eraserBtn.visible==true) {
eraserBtn.visible=false;
penBtn.visible=true;
} else {
eraserBtn.visible=true;
}
}
}
private function downFun(e:MouseEvent) {
shape.graphics.lineStyle(20,0);
shape.graphics.moveTo(mouseX,mouseY);
blackboard.addEventListener(MouseEvent.MOUSE_MOVE,moveFun);
blackboard.addEventListener(MouseEvent.MOUSE_UP,upFun);
}
private function moveFun(e:MouseEvent) {
shape.graphics.lineTo(mouseX,mouseY);
if (eraserBtn.visible==false) {
bitmapD.draw(shape,new Matrix(),new ColorTransform(),BlendMode.ERASE);
}
if (penBtn.visible==false) {
bitmapD.draw(shape,new Matrix(),new ColorTransform(),BlendMode.NORMAL,new Rectangle(0,0,1920,1080));
}
e.updateAfterEvent();
}
private function upFun(e:MouseEvent) {
shape.graphics.clear();
blackboard.removeEventListener(MouseEvent.MOUSE_MOVE,moveFun);
blackboard.removeEventListener(MouseEvent.MOUSE_UP,upFun);
}
}
}
as3.0 橡皮功能2的更多相关文章
- as3.0橡皮擦功能
//主容器 var main:Sprite = new Sprite(); main.mouseEnabled = false; addChild(main) //临时容器(所有操作都将先画在临时容器 ...
- As3.0 类的【枚举】
As3.0 类的枚举 “枚举”是您创建的一些自定义数据类型,用于封装一小组值.ActionScript 3.0 并不支持具体的枚举工具,这与 C++ 使用 enum 关键字或 Java 使用 En ...
- as3.0中如何阻止事件冒泡
原作者:菩提树下的杨过转载出处:http://yjmyzz.cnblogs.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究 ...
- [ActionScript 3.0] AS3.0和AS2.0的相互通信
AS3和AS2之间的通信,最好的方式可能就是LocalConnection了. AS2向AS3发送数据,即AS2调用AS3的函数: as2.0代码(按钮上写的发送信息代码): on (release) ...
- 转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式
Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关 ...
- as3.0 interface接口使用方法
[转]as3.0 interface接口使用方法 AS在2.0的时候就支持接口了 接口能够让你的程序更具扩展性和灵活性,打个例如 比方你定义了一个方法 代码: public function aMet ...
- AS3.0定义变量的访问范围
在AS3.0中变量的默认访问范围是:internal:包内成员可以访问,包外不可访问.AS2.0默认访问范围是public
- AS3.0函数定义的方法
在AS3.0中函数的定义有两种方法: 函数语句定义法: function 函数名(参数1:参数类型,参数2:参数类型):返回值类型{ 函数折行的语句 } function testAdd(a:int, ...
- VS2015预览版中的C#6.0 新功能(二)
VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通 ...
随机推荐
- elk收集windows日志
参考网站:https://www.secpulse.com/archives/55636.html https://blog.csdn.net/qq_38094271/article/details/ ...
- 浏览器和对象的dom属性
1 DOM对象:var obj=document.getElementById('*'); obj.scrollWidth 是对象的实际内容的宽,不包边线宽度,会随对象中内容的多少改变(内容多了可能会 ...
- LabelFunction 允许在显示数据以前进行处理
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- django之paginator
class Paginator(object):#分页器 def __init__(self, object_list, per_page, orphans=0, allow_empty_first_ ...
- MySql.Data.MySqlClient连接MySql
在C#中连接MySql数据库其实是件很简单的事情,但对于刚开始学习C#的朋友来说,问题却是不小,主要原因是相对于ACCESS和MSSql来说,MySql方面的教程文章实在太少,我也是自己摸索好好半天才 ...
- leetcode 题解: Gray Code
第一眼看到就是枚举,回溯法. n位的ans就是在n-1的ans的基础上,每一个在首位加上1. 但是有个难点,要保证相邻两数之间只有一位在变化,怎么办? 首先 00 00 01 00 01 11 10 ...
- 创建pod步骤
创建pod步骤 Steps: pod lib create YBUtils //创建基本目录结构及工程 pod lib lint YBUtils.podspec //验证podspec文件是否合法 ...
- 转: jquery.qrcode.js生成二维码插件&转成图片格式
原文地址: https://blog.csdn.net/u011127019/article/details/51226104 1.qrcode其实是通过使用jQuery实现图形渲染,画图,支持can ...
- Delphi在Listview中加入Edit控件
原帖 : http://www.cnblogs.com/hssbsw/archive/2012/06/03/2533092.html Listview是一个非常有用的控件,我们常常将大量的数据(如数据 ...
- Django2.0 path和re_path使用
Django2.0发布后,很多人都拥抱变化,加入了2的行列.但是和1.11相比,2.0在url的使用方面发生了很大的变化,下面介绍一下: 一.实例 先看一个例子: from django.urls i ...