FLASH AS矢量线条擦除实例

  先看效果(先用鼠标随意绘制,然后可以利用蓝块擦除)

点击这里下载源文件

  FLASH矢量线条擦除:

/*
矢量线条的擦除在涂鸦板也许用处不是很大
写的不到位,还望高手指点
原理很简单,
用橡皮来检测与数组中的点相碰
删除碰撞点
重新绘制线条
放在第一帧就可以运行
Email:happyclub@163.com

*/
var startX:Number;
//起始点
var startY:Number;
var Path:MovieClip = this;
//路径
var lineArray:Array = [];
//鼠标点数组
var clearLine:Boolean = false;
//是否清除线条
var RdrawTo:Boolean = false;
//是否从新绘制
var StartDraw:Boolean = false;
//开始绘制
Path.createEmptyMovieClip("drawMc", 1);
//建绘图MC
Path.createEmptyMovieClip("mask", 2);
//建橡皮遮罩线条MC
var lineOrder:Number = 0;
//数组下标
//-----------------------INIT-------------------------------------
var eraser:MovieClip = createRectangle(15, 15);
eraser._x = Stage.width/2;
eraser._y = Stage.height/2;
eraser.onPress = function() {
clearLine = true;
this.startDrag();
};
eraser.onRelease = function() {
clearLine = false;
stopDrag();
};
function createRectangle(W, H):MovieClip {
var depth:Number = Path.getNextHighestDepth();
var mc:MovieClip = Path.createEmptyMovieClip("eraser", depth);
mc.beginFill(0x0033ff);
mc.lineTo(0, H);
mc.lineTo(W, H);
mc.lineTo(W, 0);
mc.lineTo(0, 0);
return mc;
}
//--------------------------eraser------------------------------------
Path.onMouseDown = function() {
var i = 0;
while (lineArray == "#") {
  i++;
}
lineArray.splice(0, i);
lineOrder = lineArray.length;
StartDraw = true;
startX = _xmouse;
startY = _ymouse;
Insertion = true;
};
Path.onMouseMove = function() {
if (StartDraw == true && clearLine == false) {
  lineArray[lineOrder] = [];
  lineArray[lineOrder].push(_xmouse, _ymouse);
  Path.drawMc.lineStyle(5, 0, 100);
  Path.drawMc.moveTo(startX, startY);
  Path.drawMc.lineTo(_xmouse, _ymouse);
  lineOrder++;
}
startX = _xmouse;
startY = _ymouse;
if (clearLine == true) {
  for (var i = 0; i<lineArray.length; i++) {
   if (Path.eraser.hitTest(lineArray[0], lineArray[1], true)) {
    Path.mask.lineStyle(5, 0xffffff, 100);
    Path.mask.moveTo(lineArray[0], lineArray[1]);
    Path.mask.lineTo(lineArray[0]+1, lineArray[1]+1);
    Path.mask.lineTo(lineArray[0]-1, lineArray[1]-1);
    Insertion == true && lineArray[i-1] != "#" && lineArray != "#" && lineArray[i+1] != "#" ? (lineArray.splice(i, 1, "#")) : lineArray.splice(i, 1);
    RdrawTo = true;
    Insertion = false;
    break;
   }
  }
}
};
//-----------------------MOUSEMOVE------------------------------------
Path.onMouseUp = function() {
StartDraw = false;
if (RdrawTo == true) {
  Rdraw();
}
lineArray[lineArray.length-1] != "#" ? (lineArray.push("#"), lineOrder++) : null;
RdrawTo = false;
};
//-----------------------MOUSEUP---------------------------------------
function Rdraw() {
Path.mask.clear();
Path.drawMc.clear();
Path.drawMc.lineStyle(5, 0, 100);
for (var i = 0; i<lineArray.length; i++) {
  if (lineArray != undefined && lineArray[i+1] != undefined && lineArray[i+1] != "#" && lineArray != "#") {
   Path.drawMc.moveTo(lineArray[0], lineArray[1]);
   Path.drawMc.lineTo(lineArray[i+1][0], lineArray[i+1][1]);
  }
}
}
//-------------------------重绘----------------------------------------

时间: 2025-01-21 06:13:15

FLASH AS矢量线条擦除实例的相关文章

flash 加载xml入门实例教程

flash 加载xml入门实例教程 在这篇文章中我们将使用一个xml文件,该文件描述了一个照相馆.的xml存储照片的标题和图像文件的位置 <?xml version="1.0"?> <gallery name="photo gallery"> <image name="picture_1" location="www.111cn.net/photo1.jpg" /> <image na

FLASH调用XML数据代码实例教程

FLASH调用XML数据代码实例教程 FLASH如何调用XML数据:建立XML对象: var myXML = new XML(); 引用XML文件: myXML.load("data.xml"); 忽略空格: myXML.ignoreWhite = true;//默认的为false 处理XML对象的函数: myXML.onLoad = function(success){ statements;} data.XML文件的内容: xiaoshandong xiaoshandong3 my

Flash/Flex学习笔记(33):如何用As3协同Flash CS IDE控制MovieClip实例

AS3历经若干年的成长,已经完全进化为一门面向对象的(动态)语言,但很多介绍AS3的书籍上往往只注意了AS3语言本身,而淡化了如何跟Flash IDE协同开发. 1.如何在Flash时间轴代码上创建一个外部as文件中定义的MovieClip实例? 假设外部有一个MyClip.as文件,内容如下: package { import flash.display.MovieClip; public class MyClip extends MovieClip { public function MyC

Flash 补间动画 Tweening实例教程

Flash 补间动画 Tweening实例教程 随着渐变动画你可以从一个关键帧到另一指定变化的动画,让闪存程序创建帧之间. 例如 在这个例子中,您将了解到如何使移动的物体在屏幕上. 例如 第1步 创建一个小圈子的留在舞台区.做到这一点的圆圈,选择工具从左边的工具栏.画的圆圈,在舞台区. 第2步 选择箭头工具,从左边的工具栏.双击圆圈以选取它. 第3步 现在我们必须转换循环的象征.当循环转换为符号,我们可以创建实例循环.从顶部的菜单中选择修改"转换为符号.名称,文号为"球" ,

Flash Professional 8超酷实例欣赏和剖析

Flash 8官方发布的消息一经推出,便吸引了无数Flasher的眼光.新版的Flash 8确实有不俗的表现,不仅提供了设计方面强大的新功能,在代码方面,也有许多新增的特性等待大家去一一挖掘.Flash 8将给我们带来焕然一新的视觉冲击,给设计者们带来更多的个人体验,它的性能更加强大,也更加专业. 国外的一些Blog站点已经陆续登出Flash 8的最新实例,下面我们就一起来欣赏Flash爱好者们使用新版Flash 8制作的最新超酷实例. 在欣赏这些实例之前,必须首先下载并安装Flash Play

用FLASH绘制矢量图以假乱真

用FLASH也可绘制较为真实的矢量图,首先找一张手机的图片,导入FLASH,作为背景图层. 新建图层,此图层建立在背景图层之上.可适当设置背景图层中图片的Alpha值,用线条工具勾画出手机的基本轮廓. 复制手机轮廓图层,将不必要的线条删除,为手机上色.注意保留原始轮廓图层以备以后使用.在这里使用渐变是关键,要仔细观察背景图片中的色彩和明暗程度.可用滴管工具汲取背景图层手机的颜色,这样可以使绘制出的手机更为真实.  为手机按键添加效果. 再次复制手机轮廓图层,删除不需要的线条,为手机按键勾边. 进

Flash 8新特性开发实例教程

教程 flash 8 新特性的 API 开发实例教程-flash动画实例教程"> 看看上图,flash8特性的API主要集中在下面4块1 图形效果[Filters]多种和滤镜有关的类,可以将阴影,模糊这些特效加到你的 mc上.[Geometry Classes]提供了 Matrix, Point, Rectangle and ColorTransforms 等各种颜色变换效果[MovieClip Extensions ]除了可以让mc可以利用Filter,geometry外.还提供了 [B

Flash制作金属文字特效实例

1.1金属文字 使用Flash制作金属字,也算是老生常谈了,但要制作得象样也并不那么容易,此实例的实现的是制作一蓝底的金属字效果,在制作过程中主要使用了渐变填充等工具,通过简简单单几样工具便创造出了漂亮的金属的效果.难点就在于图形.色彩编辑的技巧和填充工具的使用.最终播放效果如图1所示,要实现这一效果,具体制作过程如下: 图1 最终效果 1.新建一个电影,在属性面板中设置其尺寸为500pxX400px,选择一种颜色(本例为#003399)作为背景色. 2.在工具箱中先中文本工具,并在文本属性面板

flash as3.0粒子效果实例教程

1.新建Flash文档,设置:宽.高为 400 × 400 ,保存. 2.用椭圆工具在舞台上画一个 20 × 20 大小的圆. (你能选择任意的颜色) 3.右键单击圆形,把它转换成影片剪辑,注册点居中. 4.在ActionScript导出的复选框中打勾 ,做类链接,类名为" Particle " .图1:5.把圆形从舞台删除,新建ActionScript 3.0文件.图2:6.我们编写一个外部的Particle类.在编译器中输入代码: package {         import