您现在的位置: 圆点视线 >> 教程 >> flash教程 >> Action应用 >> 文章正文
[推荐]FLASH矢量线条擦除           ★★★
FLASH矢量线条擦除
作者:huanghr  文章来源:闪吧  点击数:  更新时间:2007-7-2 18:13:54 
 页面功能:【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口 【字体:

 /*
矢量线条的擦除在涂鸦板也许用处不是很大
写的不到位,还望高手指点
原理很简单,
用橡皮来检测与数组中的点相碰
删除碰撞点
重新绘制线条
放在第一帧就可以运行
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]);
  }
}
}
//-------------------------重绘-----------------------------------------------------------

 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 文章录入:huanghr    责任编辑:huanghr  【字体:
 
  • 上一篇文章:

  •  
  • 下一篇文章:
  • 最新文章
    相关文章
    Flash实现随机加载外部图片的制作方法
    创建Flash站点的十大可用性技巧
    Flash制作圆形路径运动动画的技巧
    用Flash制作简单的飞鸟动画
    Flash技巧:常见水波动画制作全攻略
    Flash制作漂亮的三重卷动相册特效动画
    FLASH简单制作探照灯效果
    从Flash中导出透明背景的GIF动画
    用JS和CSS打造选项卡效果
    FLASH制作闪光文字
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
     姓  名: 评 分: 1分 2分 3分 4分 5分
     评论内容: ·严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
    ·用户需对自己在使用本网服务过程中的行为承担法律责任
    ·本站管理员有权保留或删除评论内容。
    ·评论内容只代表机友个人观点,与本网站立场无关。
     
    最 新 推 荐
     
    百度主题推广
    最 新 热 门