当鼠标移动到图片的一定位置时,图片会缓冲移动到鼠标位置,在现有代码的基础上在添加一些事件可以衍生出很多效果比如说,图片展示效果或者菜单效果也是经常用到的。
源代码如下:
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);
  }
 }
}

  1. 还不错,有点意思。

    回复

我内心激动,有话要说