艺虎动画 > flash AS3.0实例:制作无限回廊效果 flash制作旋转相册 flash制作流动相册

flash AS3.0实例:制作无限回廊效果 flash制作旋转相册 flash制作流动相册

翼虎动漫   2010/7/30

 

 

 

 在这个教程中,将学习如何创建一个无穷的回廊。也可以制作成菜单。注意:这个实例需要 TweenMax 类,请把附件中的gs类库保存在fla同一目录下。

演示:

http://img.flashzhizuo.net.cn/us/201073013129622.swf

 

准备6个100 × 100的图片

1、新建Flash 文件,设置属性: 500 × 200 ,背景黑色。

2、从菜单选择文件-> 导入-> 导入到舞台。选择你要使用的图片。图1:
sshot-1.png
3、垂直地对舞台的中心放置图片。平均、水平地隔开他们。使用对齐面板。图2、图3:
sshot-2.png
sshot-3.png
4、将图片转换成影片剪辑:单击舞台上最左边的图片转换成影片剪辑。命名为”My Image 1 ″而且设定注册点为居左中位置。

5、重复这个步骤,将其它的图片全部转换为影片剪辑。命名为 " My Image 2 ″ ",My Image 3 ″ ... 依此类推。图4:
sshot-4.png
现在你的库如图5:
sshot-5.png
6、双击”My Image 1″影片剪辑,进入My Image 1的编辑状态,添加 as图层。图6:
sshot-6.png
选中第1帧,在动作面板中输入代码:

  1. //Import TweenMax

    import gs.*;



    //Set the initial state for this movie clip

    TweenMax.to(this, 0.5, {alpha: 0.4});



    //Add mouse over & out event listeners

    this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);

    this.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);



    //This function is called when mouse is over this movie clip

    function mouseOverHandler(e:Event):void {



            //Tween the alpha

            TweenMax.to(this, 0.5, {alpha: 1});

    }



    //This function is called when mouse is out of this movie clip

    function mouseOutHandler(e:Event):void {



            //Tween the alpha

            TweenMax.to(this, 0.5, {alpha: 0.4});

    }

重复这个步骤到其它的影片剪辑。(当移动鼠标在一个图片上的时候,添加一个透明度效果。可以修改成放大或其它效果,自行的试验一下。)

7、前期工作已全部完成,现在开始创建无限循环。在主时间轴,选择所有的六个影片剪辑。将他们转换成影片剪辑,命名 " Gallery Images "。图7:
sshot-7.png
8、为了使图片有无限循环的效果,我们需要舞台上的 " Gallery Images " 影片剪辑的另一个实例。因此在舞台上复制(选中Gallery Images,按住Ctrl键拖拽)另外的一个 " Gallery Images " 影片剪辑,放置在第一个实例后面,使他们水平地排列。图8:
sshot-8.png
9、选中舞台上的 " Gallery Images " 影片剪辑的两个实例。将他们转换成影片剪辑,命名 " Infinite Gallery " 设定注册点为左居中。图9:
sshot-9.png
10、在属性面板填入实例名字 " infiniteGallery" 。

11、添加as层,打开动作面板输入代码:

  1. //Import TweenMax

    import gs.*;



    //Save the horizontal center

    var centerX:Number = stage.stageWidth / 2;



    //Save the width of the whole gallery

    var galleryWidth:Number = infiniteGallery.width;



    //Speed of the movement (calculated by the mouse position in the moveGallery() function)

    var speed:Number = 0;



    //Add an ENTER_FRAME listener for the animation

    addEventListener(Event.ENTER_FRAME, moveGallery);



    function moveGallery(e:Event):void {



            //Calculate the new speed

            speed = -(0.05 * (mouseX - centerX));



            //Update the x coordinate

            infiniteGallery.x+=speed;



            //Check if we are too far on the right (no more stuff on the left edge)

            if (infiniteGallery.x>0) {



                    //Update the gallery’s coordinates

                    infiniteGallery.x= (-galleryWidth/2);

            }



            //Check if we are too far on the left (no more stuff on the right edge)

            if (infiniteGallery.x<(-galleryWidth/2)) {



                    //Update the gallery’s coordinates

                    infiniteGallery.x=0;

            }



    }

这一段代码负责无限循环。

12、全部完工,测试影片。