在这个教程中,将学习如何创建一个无穷的回廊。也可以制作成菜单。注意:这个实例需要 TweenMax 类,请把附件中的gs类库保存在fla同一目录下。
演示:
准备6个100 × 100的图片
1、新建Flash 文件,设置属性: 500 × 200 ,背景黑色。
2、从菜单选择文件-> 导入-> 导入到舞台。选择你要使用的图片。图1:
3、垂直地对舞台的中心放置图片。平均、水平地隔开他们。使用对齐面板。图2、图3:
4、将图片转换成影片剪辑:单击舞台上最左边的图片转换成影片剪辑。命名为”My Image 1 ″而且设定注册点为居左中位置。
5、重复这个步骤,将其它的图片全部转换为影片剪辑。命名为 " My Image 2 ″ ",My Image 3 ″ ... 依此类推。图4:
现在你的库如图5:
6、双击”My Image 1″影片剪辑,进入My Image 1的编辑状态,添加 as图层。图6:
选中第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:
8、为了使图片有无限循环的效果,我们需要舞台上的 " Gallery Images " 影片剪辑的另一个实例。因此在舞台上复制(选中Gallery Images,按住Ctrl键拖拽)另外的一个 " Gallery Images " 影片剪辑,放置在第一个实例后面,使他们水平地排列。图8:
9、选中舞台上的 " Gallery Images " 影片剪辑的两个实例。将他们转换成影片剪辑,命名 " Infinite Gallery " 设定注册点为左居中。图9:
10、在属性面板填入实例名字 " infiniteGallery" 。
11、添加as层,打开动作面板输入代码:
-
//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、全部完工,测试影片。