ActionScript教程(56)--创建智能剪辑


  一、关于智能剪辑

  智能剪辑是这样一种电影剪辑,它所定义的参数是可以修改的。此后,可以把这些参数传递给智能剪辑中改变该剪辑行为的动作。

  要创建一个智能剪辑,你需要把剪辑参数赋给图符库中的电影剪辑图符。你可以在智能剪辑中编写语句,对剪辑参数进行操作。就像你在函数定义中使用参数一样。你可以在编辑区选择一个智能剪辑实例,然后在Clip Parameters(剪辑参数)面板中改变它的参数值。在播放动画期间任何动作被执行之前,在剪辑参数面板中设置的参数被传送给该智能剪辑。

  利用智能剪辑,程序员可以把复杂的Flash元素交给设计师使用。程序员可以在智能剪辑中编写包含可控制剪辑和动画的变量的动作,而设计师只需在Clip Parameters面板改变那些变量的值,无需打开动作面板编程。

  也可以使用智能剪辑来创建介面元素,如单选钮、弹出菜单、工具提示、调查表、游戏和原型。任何你希望能以不同的方式在不修改脚本的情况下就可以重用的电影剪辑都可以设计成一个很好的智能剪辑。

  此外,你可以在Flash中为Clip Parameters面板创建一个自定义界面,帮助设计师使用智能剪辑。下图是智能剪辑的一个简单例子。这个下拉菜单的项目(items)和样式(style)都可以通过剪辑参数面板进行修改。

  

  二、定义剪辑参数

  二、定义剪辑参数

  剪辑参数是在剪辑被载入动画时传递给该剪辑的一些数据。在你可以在设计动画时以定义剪辑参数。 你可以在动作脚本中使用这些参数来改变动画播放时智能剪辑的外观和行为。 在图符库中,用一个特别的图标指示一个电影剪辑定义有剪辑参数。

  

  给一个电影剪辑定义剪辑参数的具体操作步骤如下:

1 在图符库中选择电影剪辑图符,执行以下操作之一显示定义剪辑参数对话框:
右击,然后从弹出菜单上选择Define Clip Parameters(定义剪辑参数)选项。

从图符库右上角的Options(选项)菜单上选择Define Clip Parameters选项。


 
 
显示出来的定义剪辑参数对话框。


2 按如下所述使用剪辑参数对话框中的控件:
单击加号(+)按钮,添加新的name/value(名称/值)对或为选定的名称/值对添加另外的参数。
单击减号(-)按钮,删除名称/值对。
使用箭头按钮,改变参数在列表中的顺序。
双击选择一个域,然后在该域中输入值。
3 对于Name(名称)域,为该参数输入唯一的标识符。
4 对于Type(类型)域,从弹出菜单上选择该参数将要包含的一种参数:
选择Default(默认),使用字符串或数值。
对于可以展开和折叠的选项动态列表,选择Array (数组)。
选择 Object(对象),声明拥有名称和值的几个相关元素,如拥有x和y元素的坐标点对象。
选择List,把选择范围控制在几种选择内,如true(真)或false(假), 或者Red(红)、Green(绿)或Blue(蓝)。
5 对于Value(值)域,从弹出菜单上选择该参数将要包含的默认值。
6 如果你要让剪辑参数面板使用自定义的界面,执行以下操作之一:
在Link to Custom UI(链接到自定义用户界面)域,输入指向自定义界面SWF文件的相对路径。
单击Link to Custom UI文件夹,浏览选择自定义界面SWF文件(参见“创建自定义界面”)。
7 对于Description(说明)域,输入需要在剪辑参数面板中显示的信息,用这些信息说明每个参数的作用。
你可以在Description中包含你希望使用该智能剪辑的用户知道的任何信息。例如,对你定义的方法进行解释的信息。
8 选择 Lock in Instance(在实例中锁定),可防止用户在剪辑参数面板中更改参数名。
建议你锁定参数名。
9 单击OK按钮。

  三、设置剪辑参数

  三、设置剪辑参数

  你可以在智能剪辑中编写动作脚本,用已定义的参数来改变智能剪辑的行为。 举一个简单的例子,如果你用Frame定义了一个剪辑参数,你就可以在这个智能剪辑中编写下面的脚本, 这个脚本使用了Frame参数:
onClipEvent(load){
 gotoAndStop(Frame);
}
  然后,你可以在编辑区中选择该智能剪辑,使用剪辑面板设置Frame参数的值,改变被播放的帧。

  

  设置智能剪辑的剪辑参数的具体步骤:

1 在编辑区选择智能剪辑参数实例。
智能剪辑属于电影剪辑,所以在设计模式只显示第一帧。
2 选择Window>Panels>Clip Parameters(窗口>面板>剪辑参数),显示剪辑参数面板。
3 在剪辑参数面板执行以下操作之一:
双击Value域选择它,为每个参数输入值。
如果该参数已经被定义为List(列表),就会显示一个弹出菜单。
如果定义了一个自定义界面,使用所提供的介面元素。
4 选择 Control>Test Movie(控制>测试动画),观察智能剪辑的行为变化。

  四、创建自定义界面

  四、创建自定义界面

  自定义界面是一个Flash动画,使用它你可以输入传递给智能剪辑的值。自定义界面取代剪辑参数面板的界面。下图是拥有自定义界面动画的剪辑参数面板。
  

  下图是剪辑参数面板中没有自定义界面的同一智能剪辑。

  

  你用自定义界面输入的任何值,都会通过自定义界面中的中介或交换电影剪辑从剪辑参数面板传递给智能剪辑。交换电影剪辑必须拥有实例名xch。如果在Define Clip Parameters(定义剪辑参数)对话框中选择了一个自定义界面,该智能剪辑实例把已定义的参数传递给xch电影剪辑,在自定义界面输入的任何新的值被拷贝给xch,并传回给该智能剪辑。

  你必须把xch剪辑放在自定义界面动画的主时间轴中,而且xch必须一直被载入。xch电影剪辑应该只包含要传递给智能剪辑的值,不应该包含任何图像、其他电影剪辑或动作脚本语句;xch仅仅是一个容器,只是通过它来传递值而已。你可以通过xch剪辑传递顶级对象,如Arrays(数组对象)和 Objects(对象对象),但你不能传递嵌套的Arrays和Objects。

  创建智能剪辑的自定义界面的具体步骤:
1 选择File > New(文件>新建),创建一个新的Flash动画。
2 选择Insert > New Symbol(插入>新图符),创建交换电影剪辑。
3 创建一个新层,命名为Exchange Clip(交换剪辑)。
4 在Exchange Clip层被选中的情况下,从图符库中把交换电影剪辑拖到编辑区第1帧。
5 在编辑区中选择交换电影剪辑,选择Window>Panels>Instance(窗口>面板>实例),输入名字xch。
6 创建动画设计者用来设置剪辑参数的界面元素。例如弹出菜单、单选钮或拖放菜单项等。
7 使用set variable动作拷贝变量和对象的值给xch实例。
例如,如果一个按钮被用作界面元素,这个按钮就要有一个动作来设置变量vertical的值,并把它传递给xch,如下所示:
on (release){
 _root.xch.vertical = true;
}
8 输出动画文件(SWF)。
  要在智能剪辑中使用自定义界面的SWF文件,你需要用定义剪辑参数对话框在包含该智能剪辑的图符库中链接它们。最好是把自定影义界面的SWF文件保存在包含该智能剪辑的FLA文件相同的目录中。 如果你在另一个文件中重用该只能剪辑,或把它传递给另一个开发者, 该只能剪辑和自定义界面的SWF文件必须保持相同的相对位置。