发新话题
打印

[分享] 利用Matrix与BitMapData类构造镜面涂抹效果

利用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

TOP

不错。看看。谢谢分享!!
深谋远虑:近战先击。

TOP

发新话题