AS3实现的3D相册效果代码
来源:http://www.adamcoulombe.info/lab/as3/screen-to-screen.html
import com.greensock.*; import com.greensock.easing.*; var lastRotX = 0; var lastRotY = 0; for(var i=0; i<gal.numChildren; i++){ var self = gal.getChildAt(i); self.addEventListener(MouseEvent.CLICK,windowClicked); } addEventListener(Event.ENTER_FRAME,loop); function windowClicked(e){ var self = e.currentTarget; removeEventListener(Event.ENTER_FRAME,loop); var timeline = new TimelineLite(); var transition = new TimelineLite(); timeline.insert(TweenLite.to(gal,1,{x:(self.x)*-1,y:(self.y)*-1, z:-1210, ease: Sine.easeInOut})); timeline.insert(transition); lastRotX = gal.rotationX; lastRotY = gal.rotationY; var oppRotX = gal.rotationX*-1; var oppRotY = gal.rotationY*-1; transition.append(TweenLite.to(gal,0.5,{rotationX:oppRotX*7,rotationY:oppRotY*7, ease: Sine.easeOut})); transition.append(TweenLite.to(gal,0.5,{rotationX:0,rotationY:0, ease: Sine.easeIn})); self.removeEventListener(MouseEvent.CLICK,windowClicked); self.addEventListener(MouseEvent.CLICK,zoomOut); } function zoomOut(e){ var self = e.currentTarget; self.addEventListener(MouseEvent.CLICK,windowClicked); var timeline = new TimelineLite(); var transition = new TimelineLite({onComplete:function(){ addEventListener(Event.ENTER_FRAME,loop) }}); timeline.insert(TweenLite.to(gal,1,{x:573,y:422, z:0, ease: Sine.easeOut})); timeline.insert(transition); transition.append(TweenLite.to(gal,0.5,{rotationX:lastRotX*7,rotationY:lastRotY*7, ease: Sine.easeOut})); transition.append(TweenLite.to(gal,0.5,{rotationX:0,rotationY:0, ease:Sine.easeInOut})); } function loop(e){ var distx:Number = mouseX / 650; var disty:Number = mouseY / 450; TweenLite.to(gal, 2, { rotationY:(-70 + (140*distx))*0.06, rotationX:(70 - (140*disty))*0.06, ease:Expo.easeOut }); }