这种效果在做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/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;
}
}
}

回复