曾娅红
摘要:该文以滚动字幕为例,使用AdobeDirector自带的Lingo语言编写了一段互动行为(Behavior),主要讲述了如何编写互动行为的内置行为事件和定制Parameters(参数)对话框。以供Lingo初学者参考。
关键词:Director Lingo;互动行为;滚动字幕
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)17-0065-02
Adobe Director作为一款优秀的多媒体开发工具,不仅拥有专业的编辑环境和高效的多媒体处理技术,还提供了强大的交互功能。Director良好的交互性主要要体现在两点:一是Diree-tor本身自带Lingo语言,这是一种面向对象的编程语言,通过它可以控制舞台(Stage)上的所有元素,实现多媒体的人机交互功能。二是Director提供了强大的内置行为库(Library),即使没有任何编程经验,也能够通过调用内置行为库中的行为(Be-havior),然后通过对该行为的Parameters(参数)对话框进行设置,从而实现相应的功能。这些行为又称之为互动行为。
1互动行为简介
在Director中,我们将编写的程序代码统称为脚本(Script)。而行为(Behavior)则是Lingo脚本类型中的一种,行为脚本主要用来控制精灵和帧。在演员表(Cast)中,行为脚本的右下角有一个齿轮状标记,这表示它是一个行为演员。行为脚本必须拖动添加给某一精灵(Sprite)或者是某一帧(frame)才会被执行。通常行为的编写都是一对一的,但是在多媒体制作中,常常会碰到这样的情况:一些精灵都拥有相似的动作,可是它们的相关属性数值设置并不一样,如果为每一个精灵都编写各自的行为脚本,会使程序变得相当臃肿,不利于调试和维护,因此,我们希望某些行为脚本在应用到不同的精灵时,大体的程序不变,只需要进行相关变动参数的设置就可以使用了。这就是互动行为。互动行为和普通行为脚本的区别就在于:互动行为在拖动至精灵时,会弹出Parameters(参数)对话框用于参数设置。在Director中,行为和互动行为都用Behavior来表示,这是因为在演员表中,它们都属于行为演员。为了便于理解,我们将这种有参数设置的行为称之为互动行为。
可以说,Director的这种互动行为正是它最具特色的功能之一,它使复杂的脚本模块化,也降低了行为的使用难度。实际上,除了使用内置行为库中的互动行为外,我们也可以编写自己的互动行为。
2编写互动行为
如何编写互动行为呢?Director提供了一个内置行为事件getPropertyDescriptionList来定制Parameters(参数)对话框,通过它我们就可以封装行为脚本,将之改写为互动行为。实际上除了内置行为事件外,互动行为内部的脚本代码与普通的脚本并无二致。getPropertyDescriptionList也是一个函数,返回一个属性列表,该属性列表的内容将用于定制Parameters(参数)对话框。
以制作滚动字幕为例,我们需要实现的动作是:使字幕从舞台底端缓慢上升,或者是从舞台的右边缓慢移至右边,当字幕完全移出舞台时,则运行至下一帧。
首先在Director中的演员表(Cast)导入需要的图像、文本等元素,然后将之按相应的顺序拖放之分镜表(Score)窗口中的通道中,通道中的每一个元素就是一个精灵(sprite),而我们编写的行为脚本则是为精灵服务的。在Director右侧的Behavior In-spector(行为检视器)中添加一个新的行为,并在该行为的Script窗口中写入如下代码:
在这段脚本中,我们定义了一个全局变量plist,声明了四个行为内部属性,并且调用了三个事件getProperty Description-List、getBehaviorDescription和beginsprite。
其中在getPropertyDescriptionList事件的属性列表pshuxing里,定制了四项行为内部属性:文本的起始位置、最终位置、运动时长,沿x轴还是Y轴运动。例如:pshuxing[#xyzhou]=[#de=fault:"x",#format:#string,#comment:”沿x或Y軸运动”,#range:["X","y"]]是行为内部属性xyzhou的描述值,包含以下信息:
1)#default:设定属性xyzhou的默认值为“x”。
2)#format:设定属性xyzhou的数据类型,#string表示是字符格式,#integer表示是整数格式,还可以设置为下列格式#float(浮点型)、#symbol(符号)、#member(所有演员名称)、#bitmap(位图演员列表)等等。
3)#comment:设定属性xyzhou的描述性文字,出现在参数对话框中参数编辑区域的左边,通常是对属性的功能的解释。
4)#range:设定属性xyzhou的范围,该范围可以是一个线性表,在参数对话框中对应的是一个下拉列表,或者是一个属性表,从最小值到最大值:[#min:minValue,#max:maxValue],在参数对话框中对应的是滑动条。
其中#default、#format和#comment是必须设置的,而#range是可选项。
事件getBehaviorDescription也是一个内置行为事件,返回自定义的描述性字符串,这些字符串出现在Behavior Inspector(行为检视器)的窗格底部,一般用于描述该互动行为的功能,相当于是一个注释,实际上它并不影响Parameters(参数)对话框的定制。我们编写该事件,只是为了增强程序的可读性。当编写互动行为相对复杂时,或者程序中包含多个互动行为时,该事件就非常有用,通过行为检视器底部的参数说明,就可以了解该行为的功能,从而方便使用。
事件beginsprite实现对sprite(精灵)的初始化,主要是将滚动字幕的相关参数记录到全局变量plist中,plist是一个属性列表,用以记录滚动字幕的相关参数,以便传递给下一个帧脚本。并且设定sprite的初始位置。
我们将编写好的互动行为从演员表中拖拽到包含滚动字幕的sprite(精灵)上,则会打开如下图1所示的参数对话框。在该对话框中设置好相应的参数,然后点击OK。
这段脚本主要是通过全局变量D1ist得到滚动字幕的相关参数,并依据时长计算包含滚动字幕的精灵(sprite)的当前位置,当超出限定的滚动时长后跳至下一帧。
至此,滚动字幕的脚本编写完毕。运行程序,可以看到字幕的滚动效果。我们还可以在Behavior Inspector(行为检视器)单击参数按钮,或者双击Behavior Inspector(行为检视器)对话框里的互动行为,再次打开Parameters(参数)对话框,对其中的参数进行修改,以达到满意的效果。
3结束语
在Director中编写互动行为,主要是对内置行为事件get-PropertyDescriptionList中属性列表的定制,因此首先要考虑的是需要设置的参数有哪些,是什么数据类型,是否有范围限制等。然后再定义相应的内部属性和参数对话框。互动行为的优势在于:一是提高程序的利用率,免于编写重复代码,也方便程序的调整修改。二是就像内置行为库中的互动行为一样,也可以将自己编写的互动行为交给不熟悉编程的人使用,他们只需要关注参数对话框的设置,而不需要关心程序是怎么编写的。这尤其适合团队中有不熟悉Lingo编程的多人开发模式。