|
闪吧成员
 
淘沙帮 - 帖子
- 263
- 积分
- 158
- 技术分
- 97
- 来自
- 重庆市涪陵区
- 在线时间
- 122 小时
- 注册时间
- 2005-10-5
|
1#
大 中
小 发表于 2008-5-5 11:54 只看该作者
利用Matrix与BitMapData类构造镜面涂抹效果
效果如图:

演示:
代码如下: 引用:/*----------------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------------------*/ 源 文件下载:
附件
-
show_pig.rar
(55.31 KB)
-
2008-5-5 11:54, 下载次数: 129
|