此页面上的内容需要较新版本的 Adobe Flash Player。

获取 Adobe Flash Player

这种效果在做FLASH全站时经常会要用到,制作起来也是比较容易的,用flash cs4能够简单地实现到这种效果。首先对图片进行加载排列,然后要产生透视效果的话只需对容器进行rotation角度的偏移而已。

排列图片:

msprite.x=(i-Math.floor(i/6)*6)*102+15;
msprite.y=Math.floor(i/6)*92+20;

透视效果:

mcMove.rotationY+=((mouseX-325)*-0.04-mcMove.rotationY)*0.15;
mcMove.rotationX+=((mouseY-150)*0.04-mcMove.rotationX)*0.15;

源代码如下:

package {
 import flash.display.Sprite;
 import flash.events.MouseEvent;
 import flash.events.Event;
 import flash.net.URLRequest;
 import flash.display.Loader;
 import gs.TweenMax;
 import fl.motion.easing.*;
 import flash.text.TextField;
 import flash.display.Bitmap;

 public class movePic1 extends Sprite {
  private var mypic:Array=new Array("http://www.okxs.net/mg/imgxt/1.jpg","http://www.okxs.net/mg/imgxt/2.jpg","http://www.okxs.net/mg/imgxt/3.jpg","

http://www.okxs.net/mg/imgxt/4.jpg","http://www.okxs.net/mg/imgxt/5.jpg","http://www.okxs.net/mg/imgxt/6.jpg","http://www.okxs.net/mg/imgxt/7.jpg",

"http://www.okxs.net/mg/imgxt/8.jpg","http://www.okxs.net/mg/imgxt/9.jpg","http://www.okxs.net/mg/imgxt/10.jpg","http://www.okxs.net/mg/imgxt/11.jpg"

,"http://www.okxs.net/mg/imgxt/12.jpg");
  private var mcMove:Sprite;
  private var msprite:Sprite;
  private var mload:Loader;
  private var i:Number=0;
  private var j:Number;
  private var pre:TextField;

  public function movePic1() {
   mcMove=new Sprite  ;
   addChild(mcMove);
   init();

  }
  private function init() {
   mload=new Loader  ;
   mload.load(new URLRequest(mypic[i]));
   mload.contentLoaderInfo.addEventListener(Event.COMPLETE,comp);
   
  }
  
  private function comp(e:Event) {

   msprite=new Sprite  ;
   msprite.x=(i-Math.floor(i/6)*6)*102+15;
   msprite.y=Math.floor(i/6)*92+20;
   msprite.addChild(mload);
   mcMove.addChild(msprite);

   if (i<11) {
    i++;
    init();
   }

   msprite.addEventListener(MouseEvent.MOUSE_OVER,over);
   msprite.addEventListener(MouseEvent.MOUSE_OUT,out);
   mcMove.addEventListener(Event.ENTER_FRAME,loop);


  }
  private function over(e:MouseEvent):void {
   var _mc=e.currentTarget;
   TweenMax.to(_mc,0.3,{scaleX:1.15,scaleY:1.15,ease:Elastic.easeOut});
   mcMove.setChildIndex(_mc,mcMove.numChildren-1);
  }

  private function out(e:MouseEvent):void {
   var _mc=e.currentTarget;
   TweenMax.to(_mc,0.3,{scaleX:1,scaleY:1,ease:Elastic.easeOut});
   mcMove.setChildIndex(_mc,mcMove.numChildren-1);
  }

  private function loop(e:Event) {
   mcMove.rotationY+=((mouseX-325)*-0.04-mcMove.rotationY)*0.15;
   mcMove.rotationX+=((mouseY-150)*0.04-mcMove.rotationX)*0.15;
  }

 }
}

 

  1. 好东西哦,我要试验一下
    Token 于 2010-6-7 13:01:22 回复
    呵呵~~欢迎参考

    回复

我内心激动,有话要说