来自好友thinking的创意,需要使用可拖动的动态遮罩来模拟抹去灰尘的效果,但想让拖动的遮罩边缘更光滑,更自然一些,在flashmx2004本身实现上不太可能用直接的方法实现,兴许多用影片剪辑嵌套可以模拟出来,但用flash8是可以实现的.下面范例及代码:
//***copyright?by?webstudio.com.cn.author?by?egoldy.2006.2.7
//导入flash8?filters类
import?flash.filters.BlurFilter;
//创建模糊对象
var?blur:BlurFilter?=?new?BlurFilter(10,?10,?2);
_root.createEmptyMovieClip(’square’,?2);
_root.pic.setMask(square);
//应用模糊
_root.square.filters?=?[blur];
//应用cacheAsBitmap.这是要害.
pic.cacheAsBitmap=true;
onMouseMove=function(){
square.drawCircle(_xmouse,_ymouse,30);
updateAfterEvent();
}
//绘制圆
MovieClip.prototype.drawCircle?=?function?(x,?y,?r)?{
this.moveTo?(x+r,?y);
this.beginFill(0x000088);
this.curveTo?(r+x,?0.4142*r+y,?0.7071*r+x,?0.7071*r+y);
this.curveTo?(0.4142*r+x,?r+y,?x,?r+y);
this.curveTo?(-0.4142*r+x,?r+y,?-0.7071*r+x,?0.7071*r+y);
this.curveTo?(-r+x,?0.4142*r+y,?-r+x,?y);
this.curveTo?(-r+x,?-0.4142*r+y,?-0.7071*r+x,?-0.7071*r+y);
this.curveTo?(-0.4142*r+x,?-r+y,?x,?-r+y);
this.curveTo?(0.4142*r+x,?-r+y,?0.7071*r+x,?-0.7071*r+y);
this.curveTo?(r+x,?-0.4142*r+y,?r+x,?y);
this.endFill();
};
本例针对webstudio站上之前教程dynamic mask,进行了一些改写,也可以和flashmx2004的效果做一下对比,可以用它来制作类似抹去照片上的灰尘,玻璃幕墙上的水雾等,总之发挥起来就较多了.