闲来无聊,写了个常见的FLASH效果,供网友学习参考。
关键步骤:
1:创建3个影片剪辑:先创建链接命名为"moc"的影片剪辑,然后在"moc"的影片剪辑中导入7张图片。然后在创建方向键头的影片剪辑,命名为"prev","next"。
2:编写程序"zdphoto"和"mcset",程序"zdphoto"控制各图片的初始状态,程序"mcset"设置初始状态的深度。
3:编写点击控制移动的程序"setRot",通过TweenMax类来控制个图片的状态。
具体详细程序如下:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
import gs.TweenMax;
import fl.motion.easing.*;
public class zdphoto extends MovieClip {
private var mov:MovieClip= new MovieClip();
private var mcov:Array = new Array();
private var h:Number=0;
private var pic:moc;
private var cenX=stage.stageWidth/2;
private var cenY = stage.stageHeight/2;
private var tarX:Array = new Array(cenX-120,cenX-80,cenX-40,cenX,cenX+45,cenX+90,cenX+135,cenX-120);
private var scale:Array = new Array(0.4,0.6,0.8,1,0.8,0.6,0.4);
private var setAlpha:Array = new Array(0.4,0.6,0.8,1,0.8,0.6,0.4);
private var setIndex:Array =new Array(0,1,2,6,5,4,3);
private var posNum=1;
private var pos:Number;
private var Rmov:Boolean;
//排列图片初始状态
public function zdphoto() {
for (var i:int=0; i<=6; i++) {
pic = new moc();
addChild(mov);
pic.gotoAndStop(i+1);
pic.x=tarX[i];
pic.y=cenY;
pic.scaleX=scale[i];
pic.scaleY=scale[i];
pic.alpha=setAlpha[i];
mov.addChild(pic);
mcov.push(pic);
}
mcset();
prev.addEventListener(MouseEvent.MOUSE_DOWN,yd1);
next.addEventListener(MouseEvent.MOUSE_DOWN,yd2);
prev.addEventListener(MouseEvent.MOUSE_OVER,over);
next.addEventListener(MouseEvent.MOUSE_OVER,over);
prev.addEventListener(MouseEvent.MOUSE_OUT,out);
next.addEventListener(MouseEvent.MOUSE_OUT,out);
}
//控制初始状态的图片深度
private function mcset() {
if (h<6) {
mov.setChildIndex(mcov[h],setIndex[h]);
h++;
mcset();
}
}
private function yd1(e:MouseEvent):void {
if (posNum>0) {
Rmov=false;
--posNum;
setRot();
} else {
prev.visible = false;
next.visible = true;
}
}
private function yd2(e:MouseEvent):void {
if (posNum<6) {
Rmov=true;
++posNum;
setRot();
} else {
prev.visible = true;
next.visible = false;
}
}
//控制图片移动
private function setRot() {
prev.visible = true;
next.visible = true;
for (var i=0; i<=6; i++) {
if (Rmov) {
pos = (posNum+i-1)7;
} else {
pos = (posNum+i+6)%7;
}
mov.setChildIndex(mcov[i],setIndex[pos]);
TweenMax.to(mcov[i], 0.6, {x:tarX[pos],alpha:setAlpha[pos], scaleX:scale[pos], scaleY:scale[pos],ease:Back.easeOut});
}
}
private function over(e:MouseEvent):void{
e.currentTarget.gotoAndStop(2);
}
private function out(e:MouseEvent):void{
e.currentTarget.gotoAndStop(1);
}
}
}

回复