Actions基本命令详解（一）

交互式电影可以让观众参与其中，通过使用键盘、鼠标等工具，跳到影像的不同部分，移动对象，输入表格信息，或者执行其它互动操作。

交互式电影是通过设置Actions(命令)来实现的。所谓Actions就是一组在特定事件发生时执行的命令。在Flash中，当电影播放到了某一帧，或者当用户点击了按钮，或者按动键盘上某些键的行为，这些都可以作为触发Actions的事件(event)。 通过创建一些命令可以告诉Flash在何种事件发生时执行什么样的命令。

Actions 是在按钮或帧的属性对话框中的Actions标签下设置的(图形和电影片断的属性对话框中是没有Actions标签的)。

所谓命令可以是象告诉电影停止播放这样单独一条的指令， 也可以是一系列指令，在执行之前先对执行条件进行计算。 很多Actions是需要我们有一些编程经验的， 还有一些Actions非常复杂，只有编程高手才能胜任。

在上一章中，我们曾在最后几节中接触了一些Actions的用法，相信大家对它的交互性已经有所认识。这一节中，我们将重点介绍Actions基本命令的概念和用法。下图所示为双击某关键帧时，在Actions标签下按下后弹出的菜单，上面列出了所有Actions命令，有些比较简单，有些理解起来也挺费劲的，接下来我们就来一一分析讲解。

Go To : 跳转到。使用Go To语句可以跳转到指定场景的指定帧上，在默认情况下，将在跳转到某一帧后停止播放。你可以通过选择Control项中Go to and Play而使电影跳转到指定帧后继续播放。使用这个语句需要设置参数。它的参数如下图所示：

Scene(场景)：指定目标场景。打开下拉框，可以选择转到哪个场景。其中current scene为当前场景，next scene为下一个场景，previous scene为前一个场景，Scene 1可以通过名称指定场景，当你使用多个场景时，每个场景的名称都会出现在这个下拉框中供你选择。

Frame(帧)：指定目标帧。其中的五个选项分别为Number -- 填上的数字表示将会直接跳转到时间轴上相应帧；Label -- 输入要跳转到的时间轴上那一帧的标签名(标签可以通过双击某一关键帧后在Label页内设置)；Expression -- 表示用表达式方式指定跳转到的帧，在选择它后，其下的Expression输入框激活，你可以选择直接输入或是用表达式编辑器。例如输入_currentframe+3表示跳转到当前帧后的第3帧；Next Frame -- 表示跳转到下一帧；Previous Frame -- 表示跳转到上一帧。

Play : 开始播放。就是继续播放已经停止了的动画，无参数。

Stop : 停止播放。就是停止正在播放的动画。一旦停止时，必须使用Play语句重新启动。这条指令也没有参数。

Toggle High Quality : 切换高画质。使用这条语句可以控制电影是否在消除锯齿模式下显示，在不消除锯齿的情况下，动画可以播放得更流畅一些。它会影响到播放器中正在播放的所有电影。一般可以和按钮结合使用，例如下面的命令将允许用户调整播放的质量。

On(Press)
Toggle high quality
End On

在第一次按下按钮时将会关闭消除锯齿功能，以低画质播放，再次单击按钮时重新以高画质播放。

Stop All Sounds : 关闭所有声音。使用这条语句可以在不中断电影播放的情况下，停止所有声音的播放。它会影响正在播放的所有电影。一般可以与按钮结合使用，让用户选择是否播放声音。

Get URL : 获取URL。使用Get URL命令可以使浏览器在指定的窗口装载指定URL（网址）的页面，或者向其他应用程序传递变量。如下图所示，在URL一栏中填入想去的网址，其格式如下所示，如果你在这一栏中填上mailto:helloh_j@yahoo.com，则会在执行该语句时，打开默认的发信工具编发新邮件。

Get URL 语句的另一个参数Window（窗口）将指定显示下载页面的浏览器窗口或框架。其中_self指定在当前框架中显示页面，_blank指定另开一个新窗口来显示，_parent指定在当前窗口的父框架中显示页面，_top为在当前窗口的的顶级框架中显示页面。例如，假设你的网页是框架结构的，如果你想在指定的框架中显示URL中指定的页面，只需要在Window栏中填入那个框架的名称即可。

还有一个参数Variable（变量）可以选择是否发送变量到URL地址，发送的方法为GET或POST。GET方法把变量附加在URL的末尾，适合传递较少的变量。而POST方法是把变量放在单独的包中传递，可以发送较长的字符串。一般情况我们无需发送变量，所以设置为Don't send即可。上图中的设置表示将会在一个新窗口中打开“新闪光时代”的主页面。

FS Command : FS命令。FS命令是Flash的一项强大功能，当动画发出FS Command时，网页执行指定的Javascript，来控制Flash动画。

如上图所示，在Command栏填入命令的名称，在Arguments栏里填上所需参数。对于For Standalone Player也就是当动画单独播放时，可以有下面的几个参数：

命　　　令

参　　　数

功　　　能

fullscreen

true/false

控制是否进行全屏播放。

allowscale

true/false

控制Flash动画是否随着播放器的变化按比例变化。

showmenu

true/flase

在True时，按右键能显示菜单；False则不显示菜单。

exec

应用程序的路径

在播放器中打开应用程序。

quit

无

关闭动画，退出Flash播放器。

Load/Unload Movie : 装载/卸载电影。这条语句可用来播放附加电影，也就是说在一个Flash动画中可以加载另外一个Flash动画，或是把已经加载的动画卸掉。这条命令还是比较重要的，因为有时可能一个电影太大了，例如有几百KB甚至几MB大，这时就可以把它分成几个小电影，然后在电影播放过程中依次加载。其他可能用到这条语句的地方还包括：
如果需要循环播放一系列SWF格式的电影，可以在每个文件末尾放一个Load Movie语句，装载下一个系列电影

制作一个分支界面，用户可以在多个SWF文件中选择。

制作一个导航界面，用Load Movie语句比用HTML页面更好。

设定Load Movie时，可以设置下列参数：

Action：指定在哪里装载/卸载文件，哉装载远程文本文体中的变量。

URL：指定需要装载的SWF的绝对或相对URL。

Location：指定加载动画的等级。在Flash播放器中，每一个Flash电影都分配有一个等级(level)，第一个装载的文件为第0级，第0级文件将为其他文件设置播放速度、背景颜色和帧的大小。后面装载的文件将出现在第0级的上面，它们可以分配到更高等级的序号。我们也可以有选择地把文件装到某一级上，即使这一级上已经有了文件，这时新装载的文件将会替换原来的文件。如果把一个文件重新装载到第0级，则所有等级的文件都会被卸载，并且播放速度，背景颜色和帧的大小都会随着新的文件而改变。 Target项将指定一个电影片断，并装载一个新的文件来替换它。使用了Target参数后，重新装载的电影会继承原来的电影片断的位置、旋转角度、缩放比例等属性。

Variables：指定是否向装载的电影发送变量，以及使用GET还是POST方式。它可以用来向生成SWF文件的CGI脚本程序发送变量。

注意，这条语句无法在编辑状态下工作，如果要检查它是否正确执行，要选择菜单Control -> Test Movie才可以。

Tell Target : 确定操作对象。这是Flash中最重要的功能之一，它类似于程序直接跳转语句，可以在一个场景的某个动画播放过程中直接跳转到其它场景中指定的电影片断进行控制。因为如果使用Go To语句只能跳转到当前电影的某一帧上，所以在这种情况下就必须要使用Tell Target语句了。在使用的时候要注意，必须给要控制的电影片断的实例起个名字。如下图所示，名字起好后，就可以在上面看到这个电影片断的图标了。

例如我们可以用多个按钮控制触发不同电影片断的播放。其中一个按钮的Actions可以如下设置：

On (Release)
Begin Tell Target("/box")
Play
End Tell Target
End On

这里box前面的"/"表示当前电影的顶层，如果用".."则表示上一层。这和我们目录的概念是类似的。

If Frame Is Loaded : 由于Flash中使用了流技术，不需要等到电影文件全部下载完才播放，所以可以在有一定数量的帧装载后就开始播放，并一边播放一边继续下载。这样我们就需要经常判断某一帧是否是装载完毕。当选择了这条语句后，会出现下图所示的对话框以进一步选择参数。其中的参数含义与Go To语句中相同。

例如，如果要判断电影的最后一帧是否已经装载，可以使用一个属性_totalframes，它表示电影的总帧数。

If Frames Loaded(_totalframes)
Go to and Play(3)
End If Frames Loaded

这样做的好处是即使在编辑的过程中修改了总帧数，这条Actions命令仍然可以不用修改。

On MouseEvent :指定鼠标事件。这一条命令只有在对按钮实例设置时才有效，在关键帧上设置Actions时是无法设置这一项的。它的作用是指定在何种鼠标事件发生后执行相应的动作。Flash中可以接受的鼠标事件有：

Press : 在按钮上按下鼠标时

Release : 在按钮上按下鼠标然后仍在按钮上释放鼠标时（默认事件）

Release Outside : 在按钮上按下鼠标，然后在按钮外释放。

Roll Over : 当鼠标移动至按钮上方时

Roll Out : 当鼠标从按钮上方移出按钮范围时

Drag Over : 在按钮上按下鼠标，拖动至按钮外，再拖回按钮上方时

Drag Out : 在按钮上按下鼠标，再拖动至按钮外时

Key Press : 在指定键被按下时

下一节我们将继续介绍其他的Actions命令。