当鼠标移动到图片的一定位置时,图片会缓冲移动到鼠标位置,在现有代码的基础上在添加一些事件可以衍生出很多效果比如说,图片展示效果或者菜单效果也是经常用到的。
源代码如下:
package {
import flash.display.*;
import flash.events.*;
public class ProxMenu extends MovieClip {
private var ia:Array;
public function ProxMenu():void {
//定义的四张图片的实例名
ia = [im1, im2, im3, im4];
for (var i:uint = 0; i < 4; i++) {
ia[i].buttonMode = true;
ia[i].ox = ia[i].x;
ia[i].oy = ia[i].y;
ia[i].tx = ia[i].ox;
ia[i].ty = ia[i].oy;
ia[i].addEventListener(MouseEvent.ROLL_OVER, onOver);
}
stage.addEventListener(Event.ENTER_FRAME, onMove);
}
private function onOver(e:MouseEvent):void {
e.target.mk.gotoAndPlay(2);
addChild(MovieClip(e.target));
}
private function onMove(e:Event):void {
for (var i:uint = 0; i < 4; i++) {
var dist:Number = getDist(mouseX, mouseY, ia[i].ox, ia[i].oy);
//当鼠标的离图片中心点的位置小于70时..
if (dist < 70) {
ia[i].tx = mouseX;
ia[i].ty = mouseY;
} else {
ia[i].tx = ia[i].ox;
ia[i].ty = ia[i].oy;
}
//鼠标移动图片产生缓冲效果
ia[i].x += Math.round((ia[i].tx - ia[i].x) * 0.3);
ia[i].y += Math.round((ia[i].ty - ia[i].y) * 0.3);
}
}
//计算鼠标离图片中心点的距离
private function getDist(x1:Number, y1:Number, x2:Number, y2:Number):Number {
var dx:Number = x2 - x1;
var dy:Number = y2 - y1;
return Math.sqrt(dx * dx + dy * dy);
}
}
}

回复