一、什么是行为
行为是一类特殊的剧本,即我们通常所说的Behavior。为了明白其具体含义,让我们先来看看什么是剧本。
在Director中,虽然只要通过鼠标的点击和拖动等一些非代码的操作就可以实现许多复杂的交互和演示,但Director强大的真正原因之一在于拥有内置的编程语言Lingo,这也是它能够成为一个完整多媒体开发平台的关键。而Lingo作为Director的核心内容,则是通过各种不Tulaoshi.com同类型的剧本来实现其作用的。
Director中的剧本共有四种:
* 影片剧本(Movie Script):作用于整个影片,包含有可供其它剧本调用的处理程序。
* 父代剧本(Parent Script):仅在进行面向对象编程时使用。
* 行为剧本(Behavior Script):根据作用区域不同分为角色剧本(Sprite Script)和帧剧本(Frame Script),分别控制相应的角色或帧。
* 演员表剧本(Cast Script):隶属于相应的演员,作用于所有使用此演员的角色。
这四种剧本互相协作,对影片进行着全面的控制。而其中的行为剧本,使用得最为广泛。
二、为什么要使用行为
那么为什么要使用行为呢?也就是说,使用行为有什么好处呢?
其实,行为的最大优势在于能够批量“生产”和“操纵”特定的角色或帧。举个简单的例子来说,如果我们需要制作一些简单的导航按钮,则只需编写下面这段代码即可:
on mouseUp me
go to frame 5
end
这段代码的含义非常简单:当在此按钮上点击鼠标时播放头跳到第5帧。我们只要将其赋予某个按钮,即可实现相应的导航功能。
如果只需少量这样的按钮,则并不能看出来行为的优势,但如果需要制作许多这样的导航按钮且导航目的地不同时,行为的优势便显而易见了。简单的说,只需编写一个简单的导航行为,就可“以不变应万变”。
三、编写自己的行为
下面我们就以上面所提到的导航按钮为例,编写一个简单完整的“Guide Behavior”。
1. 准备素材:
首先,准备需要使用的演员(包括文本演员和按钮演员各4个)并将其置于舞台之上,完成后的结果如图所示。其中4个文本演员生成的角色分别位于通道1中的不同帧。
2. 编写剧本:
打开剧本窗口,建立一个名为“Loop”的剧本演员,并在属性监察窗中将其属性调整为“Behavior”,然后输入下面的代码:
on exitFrame me
go to the frame
end
上面这段代码使得播放头始终在当前帧上循环,直至发出跳出循环的命令。其实这个“Loop”便是一个简单的行为,只不过它并没有需要设置的参数。
使用相同的方法建立一个名为“Guide”的剧本演员并调整其属性,然后输入下面的代码:
property pTargetFrame
on getPropertyDescriptionList me
list = [:]
addProp list , # pTargetFrame, [ # comment: "Go To Frame" , # format: #integer , # range: [ # min: 1 , # max: 25 ], # default: 1 ]
return list
end
on mouseUp me
go to frame pTargetFrame
end
3. 添加Script:
将行为“Loop”分别拖拽到分镜表窗口帧通道的1、5、16、24帧,以使影片能够在这些帧上循环播放。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/shejiruanjian/) 以同样的方法将行为“Guide”拖拽到角色2(由演员“Button01”生成)上,此时会出现下图所示的参数对话框。通过这个对话框,可以直接指定“go to frame pTargetFrame”命令中pTargetFrame的取值。利用滑动条,在当前对话框中指定其取值为“1”。
分别对角色3、4、5进行相同的操作,只不过需要在参数对话框中指定不同的pTargetFrame取值:角色3的pTargetFrame = 5,角色4的pTargetFrame = 16,角色5的pTargetFrame = 24。
从以上的操作中可以看到,此时的pTargetFrame已经成为了一个“变量”,我们完全可以根据需要指定其取值,从而避免了为不同的导航目的地编制不同的导航命令。这便是行为的强大之处。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/shejiruanjian/)
四、完善自己的行为
虽然“Guide”行为已经能够发挥其应有的作用,但离完整的行为还有一段距离,下面让我们来对其进行一些完善。
1. getPropertyDescriptionList函数的使用
在编写上面的“Guide”行为时,我们使用了一个名为“getPropertyDescriptionList”的函数,那么这个函数具体有什么作用呢?
getPropertyDescriptionList函数实际上返回的是一个属性列表,而其中的属性和属性12下一页