全Flash网站制作剖析

一、全Flash网站和单个Flash作品制作的区别
1、文件结构不同
单个Flash作品的场景、动画过程及内容都在一个文件内，而全 Flash网站的文件由若干个文件构成，并且可以随发展的需要继续扩展。全Flash网站的文件动画分别在各自的对应文件内。通过Action的导入和跳转控制实现动画效果，由于同时可以加载多个SWF文件，它们将重叠在一起显示在屏幕上。
2、制作思路不同
单个Flash作品的制作一般都在一个独立的文件内，计划好动画效果随时间线的变化或场景的交替变化即可。全Flash网站制作则更需要整体的把握，通过不同文件的切换和控制来实现全Flash网站的动态效果，要求制作者有明确的思路和良好的制作习惯。
3、文件播放流程不同
单个Flash作品通常需要将所以的文件做在一个文件内，在观看效果是必须等文件基本下载完毕才开始播放。但全Flash网站是通过若干个文件结合在一起，在时间流上更符合Flash软件产品的特性。文件可以做的比较小，通过陆续载入其它文件更适合Internet的传播，这样同时避免了访问者因等待时间过长而放弃浏览。

二、常用技术

1、重要ActionScript代码控制
这是全Flash网站实现的关键，尤其是Flash MX新增了很多功能强大的命令，关于这部分，请大家可以参看看看其它的资料,这里只介绍部分制作全Flash网站需要使用的比较重要的ActionScript函数。
loadMovieNum("url",level[, variables])
loadMovie("url",level/target[, variables])

功能说明： |
| 在播放原来加载的影片的同时将SWF或JPEG文件加载进来。
参数说明： |
url | 要加载的 SWF 或 JPEG 文件的绝对或相对 URL，不能包含文件夹或磁盘驱动器说明。
level | 把swf文件以层的形式载入到Movie里，若载入0层，则载入的swf文件将取代当前播放的Movie，。2层高于1层。
Target | 可用路径拾取器取得并替换目标MC，载入的电影将拥有目标MC的位置、大小和旋转角度等属性。(个人认为用Target好些，在控制载入.swf位置时比较方便)
variables | 可选参数，指定发送变量所使用的 HTTP 方法（GET/POST），如果没有则省略此参数。

层次Level：Flash允许同时运行多个SWF文件，Flash一旦载入一个SWF文件，则占据了一个"层次"，系统默认的是_Flash0或_Level0，之后的Movie则按顺序放在level0---level16000里。第一个载入的SWF文件为_Flash0或_Level0，第二个如果加载到第一层时的称为_Flash1或_Level1,依此类推。注意前提是前面载入的文件没有退出，否则冲掉第一个SWF文件，第一个文件也从内存中退出。

注意：如果你将外部的Movie加载到Leve0层或者Level0里，那么，原始的Movie就会被暂时取代，要再用时还得重新Load一次，也就是说，一个Level在一个时间里只能有一个Movie存在。在使用LoadMovie和UnLoadMovie时必须特别注意Level之间的关系，否则，当你希望在一个时间里只播放一个Movie而Unload掉前一个Movie时，就会出现不必要的麻烦。

unloadMovieNum(level)
unloadMovie[Num](level/"target")

功能说明： | 从 Flash Player 中删除已加载的影片。
参数说明： | 同上

loadVariables ("url" ,level/"target" [, variables])

功能说明： |
| 从外部文件中（例如文本文件，或由 CGI 脚本、Active Server Page (ASP)、PHP 或 Perl 脚本生成的文本）读取数据，并设置 Flash Player 级别或目标影片剪辑中变量的值。
参数说明： |
url | 变量所处位置的绝对或相对 URL
level | 指定 Flash Player 中接收这些变量的级别的整数。
Target | 指向接收所加载变量的影片剪辑的目标路径。
variables | 可选参数，指定发送变量所使用的 HTTP 方法（GET/POST），如果没有则省略此参数。

gotoAndPlay(scene, frame)

功能说明： |
| 转到指定场景中指定的帧并从该帧开始播放。如果未指定场景，则播放头将转到当前场景中的指定帧。
参数说明： |
scene | 转到的场景的名称。
frame | 转到的帧的编号或标签。

2、Loading的制作

考虑到网络传输的速度，如果index.swf文件比较大，在它被完全导入以前设计一个Loading引导浏览者耐心等待是非常有必要的。同时设计得好的loading在某些时候还可以为网站起一定的铺垫作用。
一般的做法是先将loading做成一个MC，在场景的最后位置设置标签如end，通过ifFrameLoaded来判断是否已经下载完毕，如果已经下载完毕则通过gotoAndPlay控制整个Flash的播放。
以一个Loading文件为例，在场景里加入插入MC，
ifFrameLoaded ("end" ) {
gotoAndPlay("开始播放的地方");
}

3、文本导入
在我们制作全Flash网站的过程中经常遇到一定量的文字内容需要体现，文本的内容表现与上面介绍的流程是一样的，不同的地方体现最后的表现效果和处理手法还是有些不同。
方法一、文本图形法
如果文本内容不多，有希望将文本内容做的比较有动态效果，可以采用此法。将需要文本做成若干个Flash的元件，在相应的位置安排好。文本图形法的文件载入与上面介绍的处理手法比较类似，原理都差不多。具体动态效果就有待大家自己去考虑，这里就不多介绍。

方法二、直接导入法
文本导入法可以将独立的.txt文本文件，通过loadVariables导入到Flash文件内，修改时只需要修改txt文本内容就可以实现Flash相关文件的修改，非常方便。
在文本框属性中设置Var:变量名（注意这个变量名）。
为文本框所在的帧添加ActionScript代码：
loadVariables("变量名.txt", "");
编写一个纯文本文件.txt（文件名随意），文本开头为“变量名=”，“＝”后面写上正式的文本内容。

三、实例制作剖析
一般制作流程：
网站结构规划—> Flash场景规划—>素材准备—>分别制作—>整体整合
1、本实例网站结构规划
网站栏目：News、About、E-mail、Gallery、Cartoon、Animation
子栏目About：Feiying is、Member、Relationship、Contact Us

红线部分构成主场景（舞台），每个子栏目在首页里仅保留名称，属性为按钮。
蓝线部分内容为次场景（演员），可以将次场景内容做在一个文件内，同时也可以做成若干个独立文件，根据需要导入到主场景（舞台）内。

2、首页场景index.swf的制作
全Flash网站由主场景、子场景、次子场景……构成。
和制作html网站类似，一般我们会制作一个主场景index.swf，主要内容包括：长宽比例、背景、栏目导航按钮、网站名称等“首页”信息。最后发布成一个html文件，或者自己做一个html页面，内容就是一个表格，里面写上index.swf的嵌入代码即可。
主场景安排：

蓝色线条部分为网站名称、版权等固定信息区，通常所在位置为Flash动画的边缘位置。
橙色线条内容为网站栏目导航按钮，通常也是固定在某个区域。按钮可以根据需要做成静态或动态效果，甚至可以做成一个包含MC变化的Button。
绿色线条部分为主场景导入子文件的演示区域。

在子文件的装载方面主要用到:LoadMovieNum、UnloadMovieNum两个控制函数

这里我们以子栏目Cartoon的制作为例。主场景文件index中有一个按钮Cartoon，当我们点击Cartoon按钮时希望导入cartoon文件夹下的200208.swf文件。所以我们在场景内选择Cartoon按钮，添加Action代码：
on (release) {
loadMovieNum("cartoon/200208.swf", 1);
unloadMovieNum (2);
}
注意这里我们设置level为 1。

3、次场景200208.swf的制作
现在确定Cartoon子栏目需要导入的文件200208.swf，该文件计划包含5个子文件。所以200208.swf文件的界面只包含用于导入5个独立子文件的5个图形按钮和一个标题。

200208.swf

从图上大家可以看到，200208.swf文件包含5个属性为button的小图标，分别为Bu_2_frog01到Bu_2_frog05。我们需要的效果是：点击它们则分别导入相应文件200208_frog01.swf到200208_frog05.swf文件。
我们在场景内选择Bu_2_frog01，为这个按钮添加ActionScript：
on (release) {
loadMovieNum("cartoon/200208_frog01.swf", 2);
}

点击Bu_2_frog02，为这个按钮添加ActionScript：
on (release) {
loadMovieNum("cartoon/200208_frog02.swf", 2);
}
……
依次将5个button分别设置好相对应的action以便调用相应的文件。
注意：这里我们设置level为2，是为了保留并区别主场景1而设置的导入的层次数，如果需要导入下一级的层数，则层数增加为3，依次类推。

4、二级次场景（200208_frog01～200208_frog05)制作
这里的二级次场景是与上级关联的内容，是本例中三级结构中的最后一级。该级主要为全Flash网站具体内容部分，可以是详细的图片、文字、动画内容。这里需要连接的是具体图片为内容，但同样需要做成与主场景比例同等的swf文件。例如：

200208_frog01

200208_frog02

该场景是最底层场景，为主体内容显示部分，具体动画效果大家可以根据需要做更深入。注意要在场景最后一帧处加入停止ActionScript代码:stop();这样可以停止场景动画的循环动作。

完整导入到主场景内的效果

5、About中的文本导入
查看本例的About子栏目，在文件index.fla里设置About按钮的action：
on (release) {
loadMovieNum("aboutus.swf", 1);
unloadMovieNum (2);
}

在aboutus.fla文件中做好显示文本的文本框，文本框属性设置为多行（Multiline）,Var:aboutus（注意这个变量名）。
为文本框所在的帧加ActionScript代码：
loadVariables("aboutus.txt", "");
在aboutus.swf文件所属目录下编写一个纯文本文件about.txt，文本开头为“aboutus=”，“＝”后面写上正式的文本内容。

将文本文件完整导入到主场景内的效果

四、注意事项
1、注意所有子文件的长、宽属性
全Flash网站从画面层次来看，非常类似Photoshop的层结构，我们可以把每个子场景看做为一个层文件，子文件是在背景的长宽范围内出现。为了方便定位，我们可以让子文件与主场景保持统一的长宽比例，这样非常便于版面安排。否则就必须用setProperty语句小心控制它们的位置。

2、发布文件时注意将html选项发布为透明模式
需要将每个子文件发布为透明模式的原因是不能让子文件带有背景底色，由于子文件的长宽比例与主场景基本是一致的，如果子文件带有底色，就会遮盖主场景的内容。
设置方法：在发布设置里勾选html选项，在html面板里选择windows mode:Transparent Windowless, 如图。

3、使用文本导入时，注意文本文件开头的内容必须是“与文本框属性中Var定义名相同的字符串=正文”。另外需要导入文本的swf文件与被导入的txt文本文件最好在同一目录内。
4、注意仔细检查文件之间的调用是否正确，避免出现“死链接”。