当前位置:主页>AS 应用>文章内容
  • 利用Matrix与BitMapData类构造镜面涂抹效果(as2.0)
  • 来源:taoshaw.com 作者:taoshaw 2008-05-07 【
效果如图:
 

演示:


 

代码如下:

/*----------------http://www.taoshaw.com------------------*/
Stage.scaleMode = 'noScale';
var tool;
var toolsize = 40;
var tooloffset = toolsize/2;
var basepoint = new flash.geom.Point(0, 0);
var basematrix = new flash.geom.Matrix();
var smudgecolor = new flash.geom.ColorTransform();
smudgecolor.alphaMultiplier = .7;
var origbmp = flash.display.BitmapData.loadBitmap("dragon_bmp");
var drawbmp = new flash.display.BitmapData(origbmp.width, origbmp.height, true, 0);
drawbmp.draw(origbmp);
var smudgebmp = new flash.display.BitmapData(toolsize, toolsize, true, 0);
var smudgeimgbmp = smudgebmp.clone();
var redrawbmp = smudgebmp.clone();
this.createEmptyMovieClip("image_mc", 1);
//设置默认Matrix对象的位置
image_mc._x = 14;
image_mc._y = 14;
image_mc.attachBitmap(drawbmp, 1);
smudge_btn.onPress = function() {
  this.gotoAndStop(2);
  redraw_btn.gotoAndStop(1);
  tool = "smudge";
};
redraw_btn.onPress = function() {
  this.gotoAndStop(2);
  smudge_btn.gotoAndStop(1);
  tool = "redraw";
};
circle_btn.onPress = function() {
  this.gotoAndStop(2);
  line_btn.gotoAndStop(1);
  setToolShape(circle_mc);
};
circle_btn2.onPress = function() {
  this.gotoAndStop(2);
  line_btn2.gotoAndStop(1);
  setToolShape(circle_mc2);
};
line_btn.onPress = function() {
  this.gotoAndStop(2);
  circle_btn.gotoAndStop(1);
  setToolShape(line_mc);
};
line_btn2.onPress = function() {
  this.gotoAndStop(2);
  circle_btn2.gotoAndStop(1);
  setToolShape(line_mc2);
};
function setToolShape(shape_mc) {
  smudgebmp.fillRect(smudgebmp.rectangle, 0);
  smudgebmp.draw(shape_mc, basematrix, smudgecolor);
  redrawbmp.fillRect(redrawbmp.rectangle, 0);
  redrawbmp.draw(shape_mc);
}
image_mc.onPress = function() {
  if (tool == "smudge") {
    this.onMouseMove = usesmudgeMouseMove;
  } else if (tool == "redraw") {
    this.onMouseMove = useRedrawMouseMove;
  }
  this.onMouseMove(true);
};
image_mc.onRelease = image_mc.onReleaseOutside=function () {
  delete this.onMouseMove;
};
function usesmudgeMouseMove(ignoreimage) {
  var offset = new flash.geom.Point(image_mc._xmouse-tooloffset, image_mc._ymouse-tooloffset);
  var drawRect = new flash.geom.Rectangle(offset.x, offset.y, toolsize, toolsize);
  if (!ignoreimage) {
    drawbmp.copyPixels(smudgeimgbmp, smudgeimgbmp.rectangle, offset, smudgebmp, basepoint, true);
  }
  smudgeimgbmp.copyPixels(drawbmp, drawRect, basepoint);
  updateAfterEvent();
}
function useRedrawMouseMove() {
  var offset = new flash.geom.Point(image_mc._xmouse-tooloffset, image_mc._ymouse-tooloffset);
  var drawRect = new flash.geom.Rectangle(offset.x, offset.y, toolsize, toolsize);
  drawbmp.copyPixels(origbmp, drawRect, offset, redrawbmp, basepoint, true);
  updateAfterEvent();
}
smudge_btn.onPress();
circle_btn.onPress();
/*----------------http://www.taoshaw.com------------------*/


        点此下载源文件>>>




上一篇:模糊运动特效(as2.0)   下一篇:FLASH里做新闻信息列表按日期,按标题排序,以及关键字搜索(as2.0)
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)