创建一个新的 Flash 文档,并将其保存为 dropshadowmouse.fla。
将下面的 ActionScript 添加到时间轴的第 1 帧:
代码如下 |
复制代码 |
import flash.filters.DropShadowFilter;
System.security.allowDomain("http://www.111com.net");
var dropShadow:DropShadowFilter = new DropShadowFilter(4, 45, 0x000000, 0.8, 10, 10, 2, 2);
// 加载图像并在舞台上定位该图像。
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip):Void {
target_mc._x = (Stage.width - target_mc._width) / 2;
target_mc._y = (Stage.height - target_mc._height) / 2;
};
this.createEmptyMovieClip("img_mc", 10);
var img_mcl:MovieClipLoader = new MovieClipLoader();
img_mcl.addListener(mclListener);
img_mcl.loadClip("image1.jpg", img_mc);
// 当鼠标移动时,重新计算投影的位置。
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function():Void {
var p1:Number = img_mc._y - _ymouse;
var p2:Number = img_mc._x - _xmouse;
var degrees:Number = Math.atan2(p1, p2) / (Math.PI / 180);
dropShadow.distance = Math.sqrt(Math.pow(p1, 2) + Math.pow(p2, 2)) * 0.5;
dropShadow.blurX = dropShadow.distance;
dropShadow.blurY = dropShadow.blurX;
dropShadow.angle = degrees - 180;
img_mc.filters = [dropShadow];
};
Mouse.addListener(mouseListener);
|
此代码的第一部分定义投影实例,加载外部图像,并将该图像重新定位在舞台中央。代码的第二部分定义鼠标侦听器,每次当用户沿舞台移动鼠标指针时,将随即调用该侦听器。每次移动鼠标时,事件处理函数都将重新计算鼠标指针与图像左上角之间的距离和角度。根据此计算,投影滤镜将重新应用于影片剪辑。