用FlashMX制作时空穿梭效果
网络与通信
本例实现的是在浩瀚宇宙中,无数星辰匆匆而过的效果。该例实现方法简单,效果炫目,也很有实用价值。譬如,在实例中放上一架战舰,会产生飞机快速运动的效果。相信本例一定能为你的作品增色不少。
下面我们就开始具体地制作。
1. 打开FlashMX,设置场景的大小为450px×450px,黑色背景。帧频为15fps。
2. 按快捷键“Ctrl+F8”打开“创建新符号”面板,创建一个名为“流星”的图形符号。接着在“流星”符号的场景里绘制一个如(图1)所示的流星状物体,其宽、高度分别为3px、100px。绘制时可以把该流星体分为几段,分别着上不同的颜色,则更能体现出流动的视觉效果。

3. 按快捷键“Ctrl+F8”创建一个名为“流星雨”的影片剪辑符号。然后在“流星雨”符号的场景里把“图层一”层改名为“动画”层。接着按快捷键“Ctrl+L”打开库,把库中的图形符号“流星”拖曳到“动画”层的场景中。
4. 点选“动画”层第1帧中的“流星”,按快捷键“Ctrl+T”打开“变形”面板并进行如(图2)所示的设置。

5. 右键单击“动画”层的第一帧并选择“创建补间动画”命令创建补间动画。接着分别点击该层的第12、22、30、36、42、45帧并按“F6”键插入关键帧(图3)。

6. 如图3所示,再点选第46帧,按“F7”键插入空白关键帧。接着右键点击该空白帧,选择弹出菜单中的“动作”命令,在打开的“动作”面板中输入代码:“stop;”。见(图3)。
7. 点选第12帧中的“流星”,打开“变形”面板把其宽和高的缩放比例设置为55%和6%,并把它向上移动20个像素。然后再把20帧中“流星”的宽和高放大一点,并也向上移动一定的像素。第30、36...帧以此类推。这样,当“流星”离我们越近时,它看上去就会更大,运动的速度也会越来越快。
8. 回到主场景,打开库,把库中的影片剪辑符号“流星雨”拖到主场景中。然后点选场景中的“流星雨”,在其属性面板中给它起个实体名为“meteor”,如(图4)所示。

9. 右键点击主场景中的第1帧,选择弹出菜单中的“动作”命令,在打开的“动作”面板中输入如下代码:
//定义函数“spacetime()”,其中作用是复制影片,并对影片的角度、透明度属性进行随机设置
function spacetime() {
//变量“i”是被复制影片剪辑的惟一深度(层次),深度是复制的影片剪辑的堆叠顺序
//如果变量“i”大于300,就重新设定其值为0
if (i>300) i = 0;
i++;
//语句duplicateMovieClip()的功能是复制影片剪辑
duplicateMovieClip("meteor", "meteor" add i, i);
//语句setProperty()用来改变被复制的影片的_rotation(角度)、_alpha(透明度)属性值
//函数random()可以返回在0和value参数之间的一个随机整数
setProperty("meteor" add i, _rotation, random(360));
setProperty("meteor" add i, _alpha, random(30)+30);
}
//语句setInterval()可以每间隔一段时间就调用一次函数、方法或对象,单位是毫秒
setInterval(spacetime, 10);
好了,效果到这里就制作完成,可以进行测试了。以下是本例效果观看与下载地址:
http://vip.5dmedia.com/skyleaf/swf/spacetime.swf
http://vip.5dmedia.com/skyleaf/fla/spacetime.rar
最后,还有几点笔者要请大家注意。首先就是代码中语句“if (i>500) i = 0;”这种用法是可以的,如果切换回普通模式,你会发现系统会自动为语句添加上“{}”和缩进。另外,random()函数在Flash5中就已经不建议使用了。建议使用Math对象中的random()方法替代。该方法返回一个0到1之间的数。譬如可以使用语句Math.random()*360进行替换。
就本效果而言,如果你把360中的“0”去掉,或是再“摇晃摇晃”,那效果……嘿嘿,有兴趣的读者可以自己试试。