Flash4使用详解:(十八)


b>创建交互影片(二)

从本地机以外的地方获取变量
  使用“Load Movie”语句的子语句“Load Variables”可以从文本文件或由CGI脚本产生的文本中获取数据,并为影片或影片片断中地变量赋值。例如,如果用户在网上填好并提交了采购商品的订单,这时就应出现一有确认内容的窗口,其中包含从远程服务器的文件中收集的定购的数目等内容。
  要使用“Load Variables”语句,位于URL区相应文件必须是标准的“MIME” 的格式(application/x-www-urlformencoded,这是CGI脚本使用的标准格式之一)。可指定任意数目的变量,下面的这条语句指定了数个变量:
company=Macromedia&address=600+Townsend&city=San+Francisco&zip=94103
  l “URL”文本框用于设定远程文件的绝对或相对的URL。

  l “Location”组用于指定接收变量的层级和目标位置。在Flash播放器中,根据影片被载入的顺序,会相应为它指定一个数字,最先载入的影片在最下方的层级,即第0级(Level 0),而所有影片放映时的帧频、背景色和帧的大小都由该层级的影片决定。后续载入的影片将被“叠置”在第0层级上,层级数递增。参见“理解多时间轴窗口”。

  l “Variables”下拉列表框指定使用“GET”或“POST”方法传送变量,这可用于向提供SWF文件的CGI脚本传送变量。“GET”方法将变量放在URL之后一起传送,当变量数目较少时使用;“POST”方法将变量与URL分开传送,适于传送较长的字符串。参见“变量的使用”。在“Load Variables”语句中使用“GET”或 “POST” 方法,Flash把变量传送到Web服务器,根据服务器的响应修改影片中的变量。在网络环境下执行“File $#@62; Publish Preview”命令可测试变量的载入。

向影片的宿主程序发送消息

  使用“the FS Command”命令可向调用Flash播放器的程序发送消息。如果对Java Script脚本语言或构建工程不熟悉,也许就不会用到这条语句。
  该命令有两个参数:“Command”和“Argument”在“Command”文本框中可输入要发送的字符串,“Arguments”文本框用于输入字符串的选项或开关,两个文本框中都可以输入文本或表达式。
  在Web浏览器中,“FS Command”语句从嵌入Flash影片的HTML页中调用JavaScript函数“moviename_DoFSCommand”,这里“moviename”是由嵌入或对象标签的“Name”属性指定的Flash放映器的名称,如果Flash? 器被赋予“theMovie”的名称,那么JavaScript函数调用的就是“theMovie_DoFSCommand”。
  JavaScript函数传递的“Command”和“Arguments”参数可用于任何目的。例如,要通过Javascript从HTML页的Flash影片中使用“FS Command”命令语句打开一消息框或对话框,可执行下列操作:

1, 在嵌入Flash影片的HTML页中加入如下的Javascript代码:

function theMovie_DoFSCommand(command, args) {

if (command == "messagebox") {

alert(args);

}

}

2, 在Falsh影片中需要打开消息框或对话框处加入“FS Command”语句:
FS Command ("messagebox", "This is a message box invoked from within Flash.")

还可以在语句中使用变量:

FS Command ("messagebox", "Hello, " & name & ",welcome to our website!")

  可以通过创建自己的模板和使用“Publish”和“Preview”中相应的命令使HTML页支持该语句。

控制其他影片或影片片断

  使用“Tell Target”语句可控制由“Load Movie”语句载入的其他影片或影片片断,该语句较适于进行导航控制,可为按钮加入该语句来控制影片片断的播放和停止,还可以播放指定帧。
  该语句只有“Target”一个参数,用来指定与其相应的时间轴窗口,在“Begin Tell Target”和“and End Tell Target”语句间的所有语句的操作都是对该时间轴窗口的。

理解多时间轴窗口

  因为每一个Flash影片都有一个主时间轴窗口,而在影片中的每个影片片断会有它们自己的时间轴窗口,所以当Flash播放器回放一段影片时,可能会出现多个时间轴窗口。例如执行下列语句将出现七个时间轴窗口:

MovieX.swf (in level 0)

ClipA (Instance name: Jack)

ClipA1 (Instance name: Bert)

ClipA2(Instance name: Ernie)

ClipB (Instance name: Jill)

MovieY.swf (in level 1)

ClipC (Instance name: Smith)

  每段动画都在它们自己的时间轴窗口中独立运行,而某一时间轴窗口又可控制其他时间轴窗口。例如,影片x中的按钮可以使影片y中的影片片断c播放或停止;影片片断c中的帧动作可以使影片x的放映头跳转指令一场景或帧处。

指定目标

  公式编辑器(Expression Editor)中的目标按钮用来插入目标名称,在某些情况下单击目标按钮在目标文本框上方将显示可作为目标的影片片断,双击其中之一即可把它指定为目标,同时在目标区中会加入正确信息;但也会出现需要作为目标的的文件未被列出、需要手动输入的情况。
  Flash中的时间轴窗口按与Web服务器中文件和文件夹相似的层次结构来组织,所以要指定不同层次结构的目标,在目标前需要加入路径,格式与文件路径或URL相同,在SWF文件中,影片处于最高层,其中的影片片断是它的分支。
  与文件系统相似,用于指定目标路径的符号为“/”,例如,如果一影片片断前带“/”符号,表明它处于当前层的根部。
  下面我们以上一节所举的例子来说明“Tell Target”语句中的路径:
  l “/Jack”以影片x的主时间轴窗口中的名为“ClipA”的影片片断为目标。
  l “../” 以影片x中的A的时间轴窗口为目标。
  l “/Jack/Bert”从任何其他位置可指向影片片断A1。
  l “Bert” 从影片片断A处指向影片片断A1。
  l “../Ernie” 从影片片断A1处指向影片片断A2。
  l “_level1/Smith” 从任何其他位置指向影片Y中的影片片断C。
  l 目标区空白时则以当前时间轴窗口为目标。

  同一段影片片断有不同的表示方式,比如说“/Jack”指向影片x的主时间轴窗口中的名为“ClipA”的影片片断,“_level0/Jack”也能实现同样的功能,只是后者包含了更多的信息。在把一个包含“Tell Target”语句的按钮从一个影片复制到另一个影片时,向其中加入较详细的路径信息会减少出错。
  也可使用表达式来指定目标,在参数区的表达式“"/"&ButtonName”会使“Tell Target”语句向影片片断发送包含在变量“ButtonName”中的信息。 
  时间轴窗口必须在Flash播放器中才能被当作目标,只有当放映头在影片片断的某一帧上时该影片片断的时间轴窗口才会出现。举例来说,如果一影片片断在时间轴窗口上的位置为1到20帧,那么当影片在1到20 帧的任何位置处放映或停止时,该影片片断可作为目标,进入21帧后,播放器中不再有该影片片断,它也就不能作为目标。参见“查看指定帧是否载入”。

  下面是为一个在主时间轴窗口中的按钮添加的语句,点按它时,可停止名为“Jack”的影片片断的播放,当按钮被释放时,将转到第55帧名为“Bert”的影片片断处继续播放:

On (Press)

Begin Tell Target ("/Jack")

Stop

End Tell Target

End On

On (Release)

Begin Tell Target ("/Jack/Bert")

Go to and Play (55)

End Tell Target

Go to Next Frame

End On

复制和删除影片片断

  使用“Duplicate Movie Clip”语句可在影片播放时创建它的一个副本,复制影片片断之后,不管原影片片断放映到什么位置,新复制的片断将从第一帧开始播放。
  使用“Remove Movie Clip”语句可删除由“Duplicate Movie Clip”语句创建的副本。
  这两条语句有以下参数:
  l “Action”单选组项用于确定语句是复制还是删除。
  l “Target”文本框用于指定要复制或删除的影片片断,但击它右方标有“”的按钮,从展开的菜单中选择“目标编辑器(Target Editor)”可以可视化地指定目标,也可以在文本框内输入目标路径。参见“指定目标”。
  l “New Name”文本框中可输入复制的影片片断副本的名称,只能输入名字,不含路径。一旦命名,该副本可作为目标被引用。
  l “Depth”文本框用于确定当副本与影片中原有对象重叠时它所在的层数,深度(depth)的层级以对相对级的顺序来表示,最初的层为0层。需要为每一个复制的影片片断设置一深度值,否则它们将代替第0层它之前的影片片断,通常把它们设为原影片片断上方。
  l 除非原影片片断消失,否则副本不会消失,但可以使用“Remove Movie Clip”语句删去副本。
  值得注意的时,原影片片断中的变量不会被复制到副本中,播放时副本将从它的第一帧开始。

可拖动的影片片断

  使用“Drag Movie Clip”命令可以在影片播放时移动影片片断,该命令可以启动或停止一个拖动操作。对一个已执行“Drag Movie Clip”命令的影片片断来说,如果没有执行“Stop Drag”命令或使另外一个影片片断可移动的话,它将保持可移动状态,在某一时刻只有一个影片片断是可移动的。
  “Drag Movie Clip”命令有如下参数:
  l 选中“Start Drag Operation”单选项使影片片断进入可移动状态。
  l “Target”文本框用于指定要移动的影片片断。单击它右方地标有“abc”的按钮,从弹出的菜单中选择“”项就可以可视化地指定目标。参见“指定目标”。
  l “Constrain to Rectangle”复选项用于指定一矩形区域,在该矩形区域以外的影片片断不能被移动。它的子项“left”、“ top”、“right”和“bottom”的值与原影片片断尺寸相符。
  l 选中“Lock Mouse to Center” 复选项会使移动影片片断时鼠标指针在影片片断的中央。
  下面这些语句使名为“target_item”的影片片断在一个200 × 200像素的框中移动:

On (Press, Release, Outside)

Start Drag ("target_item", L=100, T=100, R=300, B=300, lockcenter)

End On

影片的拖动和放下

  如下语句可把影片片断放置任何位置:

On (Press)

Start Drag ("movie")

End On

On (Release)

Stop Drag

End On

  通过对影片片段“_droptarget”属性求值可实现更复杂的拖动放置操作,比如检查“_droptarget”属性可以判断影片片断是否被拖至指定位置从而触发另外的动作。

改变影片片断的位置和外观

  “Set Property”语句可以在影片播放时改变一个影片片断的位置、尺寸、透明度、可见度和旋转等参数,它有如下参数:
  l “Set”下拉列表框用来指定要改变的属性。
  “X Position”和“Y Position”决定影片片断的水平和竖直坐标,坐标值相对于原影片片断坐标系。
  “X Scale”和“Y Scale”以百分数的形式指定在放映时影片片断在水平和垂直方向上的大小,默认值为100。
  “Alpha”项指定影片片断透明度,取值范围从0(完全透明)到100(不透明)。在影片片断中Alpha值为0的对象即使不可见,它仍然是激活的,也就是说影片中完全透明的按钮仍能够响应单击事件。
  “Visibility”项用于确定影片片断是否可见,可以赋的值为“True(可见)”或“False(不可见)”,也可用非0值代替“True”,用0代替“False”。在影片片断中若对象的“Visibility”属性被设为0,它将失效,例如,“Visibility”属性被设为0的按钮将不响应单击事件。
  “Rotation”指定影片片断的旋转角度。

  l “Target”文本框指定要设置属性的影片片断,但击右方标有“abc”字样的按钮从弹出的菜单中选“Target Editor”项可以可视化地指定目标,也可以直接在文本框中输入。参见“指定目标”。

  l “Value”文本框用于输入设定的属性值。
  下列语句把名为“target_item”的影片片断的y坐标值设为150:

On (Release)

Set Property ("target_item", Y Position) = 150

End On