闲来无聊,写了个常见的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);
  }
 }
}
 

  1. 效果很漂亮!

    回复

  1. 呵~过奖了~

    回复

  1. 貌似还行,我研究一下,

    回复

  1. 可以设置为自动播放吗?

    回复

  1. 或者说,不点击就3秒自动跳,点击就跳快点
    Token 于 2010-6-20 16:42:51 回复
    增加个Timer雷即可

    回复

我内心激动,有话要说