Flash4使用详解:(十七)


b>创建交互影片(一)

概述
  交互影片可以响应被演示者的操作,利用键盘或鼠标可使动画流程转到影片中不同的地方、可移动对象、向表单中输入信息以及进行许多其他的交互操作。
  创建交互影片实际是设置对事件的响应,也就是某一事件发生时要执行的一组指令。触发动作的事件可以是放映头到达了某一帧,也可以是观众单击按钮或键盘上的键,事件发生时要执行的指令可以根据需要创建。
  指令可以在按钮属性对话框或帧属性对话框的动作页(Actions tab)中设置(图形和影片片断属性对话框中没有动作页)。它可以是一条单一的命令,用来通知影片停止放映;也可以是一组命令(脚本程序),比如先进行条件判断,然后执行相应动作。许多动作的设置不需要编程经验,但也有一些需要熟悉编程语言甚至更深的东西。

为按钮设置动作

  对按钮设置动作可使按钮对用户的单击或鼠标悬停事件做出响应,对按钮实例设置动作不会影响其他基于同一符号创建的实例。
在对按钮设置动作时,一般是设置对鼠标事件的响应,当然也可用键盘事件触发它。
1, 选中按钮实例,执行“Modify $#@62; Instance”命令或双击它。

2, 在出现的属性对话框中,单击动作(Actions)标签。

3, 单击“加(+)”按钮,根据需要从弹出菜单中选择一项。



  如果动作标签不可选,说明选中的实例不是按钮,这时可转到“定义(Definition)”页把选中的实例设为按钮型,这样做的缺点是实例不一定有它作为按钮时的其他形态。
  在从菜单中选择了一项后,Flash在编码区会自动加入“on/end”关键字作为事件处理程序的开始和结束并把“Release”作为默认的触发事件。也可从菜单中选“On MouseEvent”项向编码区插入“On/End”关键字。

4, 在编码区,使“On (Release)”语句反白显示,在右方可选择触发动作的鼠标或键盘事件:
  l “Press”事件在鼠标指针在按钮上时鼠标键被按下时发生。
  l “Release” 事件在鼠标指针在按钮上时鼠标键被放开时发生,这是标准的鼠标单击事件。
  l “Release Outside” 事件在鼠标指针不在按钮上时鼠标键被放开时发生。
  l “Roll Over”事件在鼠标按键未按下情况下指针通过按钮区域时发生。Roll Out” 事件在鼠标按键未按下情况下指针在按钮区域外运动时发生。
  l “Drag Over” 事件在指针通过按钮区域时鼠标按键按下、至帧一出按钮区域又移回的情况下发生。
  l “Drag Out” 事件在鼠标指针在按钮区域内时按下、指针然后移出按钮区域时发生。
  l “Key Press” 事件在键盘上的指定键被按下时发生。

5, 单击“加(+)”按钮根据需要从弹出菜单中选择一项。
  根据所选择的动作,编码区会显示出相应关键字编码。有关关键字的用法在后面的内容中会介绍。如果对基本的编程技巧比较熟悉,可以输入在影片放映时Flash能够计算的参数。

6, 根据自己需要加入其他程序语句。
  Flash会在选定动作下加入程序语句。使用上下键按钮可改变语句的顺序。

测试按钮
  影片放映前执行“Control $#@62; Enable Buttons”命令。

为帧设置动作
  为关键帧设置帧动作可使得当放映到该帧时影片执行某些操作。例如,要想使影片中的一段循环播放,就可为第20帧加入一“转至第10帧播放”的帧动作。
  最好在分离的层内加入帧动作,有帧动作的帧在时间轴窗口中相应位置上会有一个“a”的标记。



关键帧设置动作
1, 在时间轴窗口中选择一关键帧,执行“Modify $#@62; Frame”命令或双击该关键帧。
  如果未选择关键帧而执行上述操作,那么设置的动作将被看作是当前帧的。

2, 在出现的“Frame Properties”窗口中打开“Actions”页,点按“+”按钮从弹出的菜单中选择需要的语句。
  根据所选指令,右边会出现相应的参数框,有关参数的设置在后面的内容中还会讲到。

3, 如果在放映该帧时需要执行数个操作,可重复上面的操作加入多条语句,Flash会在当前选中指令下方插入,具体执行时也会按这个顺序,使用上下键按钮可改变语句的顺序。

在场景中测试帧动作
  在影片放映之前,执行“Control $#@62; Enable Frame Actions”命令。

编辑动作
  使用帧属性对话框“Action”页中的控制按钮可以删除或改变所加语句和其中的参数,这对于管理包含数条语句的帧或按钮尤为有用。



上下移动语句行
  单击上下箭头可使选中的语句上移或下移。

删除一条语句
  选中要删除的语句单击“-”按钮。

改变当前语句参数
  在参数面板中输入新值。

影片的放映和停止
  除非有语句指定,否则一旦影片播放,它会按时间轴窗口中的顺序播放每一帧。可使用“+”弹出菜单中的“Play”和“Stop”项来控制某一段影片的播放和停止,例如,可以使某一影片在播放完上一段场景进入下一场景之前停止放映,这时要继续放映,必须要有一条“Play”语句来启动。
  “Play”和“Stop”是最常用的使用按钮控制影片片断的方式,要使用它,影片片断必须作为某一符号的一个实例且有一个名称,由“Tell Target”语句指定。参见“控制器它影片或影片片段”。

调整影片放映的质量
  使用“the Toggle High Quality”语句可使影片的“anti-aliasing”参数打开或关闭。当处于关闭状态时,影片的播放速度较快(牺牲了播放质量)。该项将作用于使用Flash播放器播放的所有影片。
  为一按钮添加“Toggle High Quality”语句可使观众调整影片的回放质量,下面的语句时第一次单击按钮使关闭影片的“anti-aliasing”参数,第二次单击时打开该项:

On(Press)

Toggle high quality

End On
  也可以利用“_highquality”属性设置放映质量。参见“全局属性”。

停止所有声音的播放

  加入“Stop All Sounds”语句可在不改变时间轴窗口的情况下终止音频通道的作用,该语句将作用于使用Flash播放器播放的所有影片。

为一按钮添加“Stop Al跳转至某一帧或场景
  “Go To”语句将使放映跳转至影片中的指定帧或场景。在跳转至某一帧情况下,可以选择是在指定帧停止放映还是从指定帧开始放映,默认情况是跳转至指定帧并停止放映。
该语句有以下参数:
  
  l “Scene”下拉列表框用于指定目标场景,如果选中了当前场景或一个已命名的场景,可在下方指定场景中的帧;如果选中下一场景或前一场景,将跳转至场景中的第一帧。参见“编辑表达式”。

  l “Frame”项与“Scene”项结合确定要跳转到的当前场景或一已命名的场景中指定的帧,可输入帧数、帧标签或条件判别式,也可指定下一帧或前一帧。例如,下面的语句将显示当前位置前方第五帧的内容:
Go to and Stop(_currentframe + 5)

  l 选中“Go To and Play”复选项使影片跳转到指定帧后继续播放。

跳转至指定的URL

  “Get URL”语句用于从指定的URL中向指定的窗口载入文档,或向另外一个在该URL处的应用程序传递变量。
  要测试这条语句,将要载入的文件应该在指定位置处,同时机器应与能访问该URL的网络相连。
“Get URL”语句有如下参数:
  l “URL”文本框用于输入要载入文档的URL地址。

  l “Window”下拉列表框用于指定把文档载入到的窗口或HTML中的框架。可以输入窗口或HTML框架的名称,也可以输入表达式:
  “_self”在当前窗口中的当前框架。

  “_blank”在新窗口中。

  “_parent”在当前框架的父框架中。

  “_top”在当前窗口中的最上一级框架中。

  l “Variables”下拉列表框用于确定是使用“GET”和“POST”方法发送变量还是根本不发送变量。“GET”方法将变量法在URL的末尾发送,在变量数目比较小时使用;“POST”方法在另外的数据标题中发送变量,适合发送较长的字符串。参见“变量的使用”。

查看指定帧是否载入

  使用“If”语句中的“_framesloaded”属性或“If Frame Is Loaded”语句可检查指定帧中的内容是否可用。该语句的一个常见的用途是在把一段影片下载到本地计算机的同时放映一段简单的动画,两者的区别主要是前者可以加入“Else”和“Else If”作为分支,而后者可以方便地指定特定帧的帧数。

在下载影片时使用“_framesloaded”属性循环播放短动画
1, 在影片的开始创建一循环的短动画,例如,可创建一显示“载入中…”信息的循环。

2, 创建一“If Frame Is Loaded”语句的帧动作用来完成当所有帧都下载完毕时跳出开始的循环继续往下放映的功能。例如,对一段开始有两帧的循环动画的影片可在第2帧中加入如下语句:

If (_framesloaded)

Go to and Play (3)

Else

Go to and Play (1)

End If

在下载影片时使用“If Frame is Loaded ”语句播放短动画
1, 在影片的开始创建一循环的短动画,例如,可创建一显示“载入中…”信息的循环。

2, 创建一“If Frame Is Loaded”语句的帧动作用来完成当所有帧都下载完毕时跳出开始的循环继续往下放映的功能。例如,一段动画有30帧,开头两帧是循环动画,那么可以在第一帧加入下列语句:

If Frame Is Loaded (30)

Go to and play (3)

End If Frame Is Loaded

在加入“If Frame is Loaded”语句时,Flash会自动加入“End If Frame is Loaded”语句作为结束。

3, 在第二帧中可加入下列语句使播放进程跳转至第一帧并继续:

Go to and play (1)

  当在语句“If Frame is Loaded”中指定的帧已经载入后,播放将跳过第二帧从第三帧继续。该语句还适用于载入大的位图或声音文件时的过程动画。
  一般情况下,“If Frame Is Loaded”语句用于执行帧动作的条件判决,但也可把它设为按钮的动作。要测试一个“If Frame Is Loaded”语句,可在打开“Streaming”项的情况下执行“Test Movie”命令,这时帧载入的情况与从网站实际下载的情况相同,这在后面还要讲到。参见“以指定的下载速率测试影片的效果”部分。

“If Frame Is Loaded”语句有以下参数:
  l “Frame”指定在下一语句执行前要载入的帧的序号或标签。

  l “Scene”下拉列表框设定包含指定帧的场景。

载入或卸载其他影片
  使用“Load Movie”或“Unload Movie”命令可以在不关闭Flash播放器的情况下放映其他影片。一般情况下Flash播放器一次执显示一段影片(SWF文件),“Load Movie”则允许一次显示显示多个影片或不必载入其他HTML文档而在影片间切换。“Unload Movie”语句卸载由“Load Movie”语句载入的影片。下面看一下适合使用“Load Movie”语句的几种情况:
  l 可以在每个SWF文件的末尾加一条“Load Movie”语句来载入下一段影片,这种方法可用来在网页中播放一段有动画效果的横幅广告。

  l 可用来创建带分支的界面,使用者可在数个SWF文件间选择。

  l 可用来创建一个导航界面,这个界面的最上层有可以转到其他层的导航控制,这种方式比在浏览其中载入新的HTML页有更平滑的转换效果。

“Load Movie”和“Unload Movie”语句有下列参数:

  l “Action”下的一组单选钮用于确定是否向一个激活的影片中载入影片、卸载影片或从远程的文本文件中载入变量。参见“从本地机以外的地方获取变量”。

  l “URL”文本框用于设定要载入的SWF文件的绝对或相对的URL。

  l “Location”组用于指定载入或卸出的影片的层级和目标位置。在Flash播放器中,根据影片被载入的顺序,会相应为它指定一个数字,最先载入的影片在最下方的层级,即第0级(Level 0),而所有影片放映时的帧频、背景色和帧的大小都由该层级的影片决定。后续载入的影片将被“叠置”在第0层级上,层级数递增。参见“理解多时间轴窗口”。
  还可以在已有SWF文件的层级上载入其他影片,这时新载入的影片将代替原SWF文件,如果使用的是“Load Variables”语句,那么层级中的变量被赋以新值,影片不会改变。如果向层级0载入一新影片,其他所有层的影片将被卸载。

  l “Target”用于指定将要被载入影片替代的影片片断。如果使用该项,载入的影片在位置、旋转和大小等的设置上将采用被替换的影片片断的设置。参见“控制其他影片或影片片段”。

  l “Variables”下拉列表框指定是否将被载入影片中的变量发送至上方URL区指定的位置,这可用于向提供SWF文件的CGI脚本传送变量。它还决定了在下载指定URL处的内容时是使用“GET”还是“POST”方法传送变量或根本不传送。参见“变量的使用”。

  l 在影片的编辑状态,“Load Movie”和“Unload Movie”语句不起作用,执行“Control $#@62; Test Movie”命令可对它们进行测试,这时要载入的影片必须在URL区指定的位置处。如果输入的是绝对URL,那么可在网络环境下执行“File $#@62; Publish Preview”命令来测试。