上一篇 | 下一篇

编写自己的行为 (上)

发布: 2007-1-25 14:15 | 作者: alphachi | 来源: aougu.net | 查看: 208次

  一、什么是行为
m X`TL 奥古多媒体*h_E;aE#Rld6z/K
  行为是一类特殊的剧本,即我们通常所说的Behavior。为了明白其具体含义,让我们先来看看什么是剧本。奥古多媒体P2{"}pJf

\Bajm(Y"]7c `'k   在Director中,虽然只要通过鼠标的点击和拖动等一些非代码的操作就可以实现许多复杂的交互和演示,但Director强大的真正原因之一在于拥有内置的编程语言Lingo,这也是它能够成为一个完整多媒体开发平台的关键。而Lingo作为Director的核心内容,则是通过各种不同类型的剧本来实现其作用的。
,V/m^o zw 奥古多媒体7M9h5Bz'b
  Director中的剧本共有四种:奥古多媒体%m8h2N%BL r)?;k
  * 影片剧本(Movie Script):作用于整个影片,包含有可供其它剧本调用的处理程序。
:l!h!b5NsPvO/NO   * 父代剧本(Parent Script):仅在进行面向对象编程时使用。
f~ ~(Q#e7}8G   * 行为剧本(Behavior Script):根据作用区域不同分为角色剧本(Sprite Script)和帧剧本(Frame Script),分别控制相应的角色或帧。奥古多媒体!Z N2a0PK.d
  * 演员表剧本(Cast Script):隶属于相应的演员,作用于所有使用此演员的角色。奥古多媒体.a1WF5A+W?.}
奥古多媒体+` v6Ft.R-A
  这四种剧本互相协作,对影片进行着全面的控制。而其中的行为剧本,使用得最为广泛。
:i mk'd5Qy5[ \
R8b9@wO3m ]1v   二、为什么要使用行为奥古多媒体!E4]*^ Z~

z#JcU$~ I7\+U6@   那么为什么要使用行为呢?也就是说,使用行为有什么好处呢?
-Ark;mz0y
U3uM[1A5k;tR-R   其实,行为的最大优势在于能够批量“生产”和“操纵”特定的角色或帧。举个简单的例子来说,如果我们需要制作一些简单的导航按钮,则只需编写下面这段代码即可:
ji@;t |+}Lo-K c 奥古多媒体+k8w HD+@VKX
  on mouseUp me
n:^6Ze\0W    go to frame 5奥古多媒体0C$j.l"@5T+K6X9E
  end
/am7q#e-z
RX3}c7I 奥古多媒体.Zpt G8CF&E
  这段代码的含义非常简单:当在此按钮上点击鼠标时播放头跳到第5帧。我们只要将其赋予某个按钮,即可实现相应的导航功能。
M_y ]5~1r*r.y
o9d/D!h+{[D5e   如果只需少量这样的按钮,则并不能看出来行为的优势,但如果需要制作许多这样的导航按钮且导航目的地不同时,行为的优势便显而易见了。简单的说,只需编写一个简单的导航行为,就可“以不变应万变”。奥古多媒体 x~pU%x t|u"~
奥古多媒体'ykM0lO.C

:B1p.^ VM   三、编写自己的行为
8Q)Yn#s/~,E$ggM
Y;a4@^ s   下面我们就以上面所提到的导航按钮为例,编写一个简单完整的“Guide Behavior”。
p/@&t d Tf+S 奥古多媒体cL ps?:al l9b
  1. 准备素材:奥古多媒体Q'lf["c+BpX

hr_~^;GBF   首先,准备需要使用的演员(包括文本演员和按钮演员各4个)并将其置于舞台之上,完成后的结果如图所示。其中4个文本演员生成的角色分别位于通道1中的不同帧。
b/k'e.MT/d@3i/@
vt AcC$G
奥古多媒体[&m)LQhQ-o

;L"z0u8x\zO-O4{W   2. 编写剧本:奥古多媒体 M!r Y)^B{9Mv
奥古多媒体e E[5jY.i O x3i
  打开剧本窗口,建立一个名为“Loop”的剧本演员,并在属性监察窗中将其属性调整为“Behavior”,然后输入下面的代码:
op u.C)P {Y_
&f E%\a2L   on exitFrame me
|kV3~n&a_    go to the frame奥古多媒体!y [RN/Q uYDgL:a
  end
4fi$V_-S 奥古多媒体;|,Ux%TBVq*I`

B:nx7x`!|1K&b 奥古多媒体)y3YHWTU0b
  上面这段代码使得播放头始终在当前帧上循环,直至发出跳出循环的命令。其实这个“Loop”便是一个简单的行为,只不过它并没有需要设置的参数。
*q?!J:BMU9IJ'H 奥古多媒体:~mmS)Vl(g#^*?,mQ'Y
  使用相同的方法建立一个名为“Guide”的剧本演员并调整其属性,然后输入下面的代码:奥古多媒体6\ exo\?d

ZD y0y;C#?   property pTargetFrame
2Z)HK9M*T ]MB 奥古多媒体nbAt(ZOr0At
  on getPropertyDescriptionList me
ha|J(_/ZN s    list = [:]奥古多媒体6~&Q[a@0FGa(M$H
   addProp list, #pTargetFrame, [#comment: "Go To Frame", #format: #integer, #range: [#min: 1, #max: 25], #default: 1]奥古多媒体4ms L+vI
   return list
)bahAa a/]iC-K   end奥古多媒体*v fH;\^0u7u\ IG
奥古多媒体c_DH$pT
  on mouseUp me
3L"R|I i4dq    go to frame pTargetFrame奥古多媒体1x5m2B'?eHl_k
  end奥古多媒体H7[*iM4X.?^;iz

!Tyri;F   3. 添加Script:奥古多媒体^LN)Kg(m:T%v
奥古多媒体?"ZD M?0]r+Z
  将行为“Loop”分别拖拽到分镜表窗口帧通道的1、5、16、24帧,以使影片能够在这些帧上循环播放。奥古多媒体P}/sb?3kNdy8D
奥古多媒体/L,{9t!X/}2e&p(K
奥古多媒体 UBm$X8f(VUk%I

qL-MK~.Yz   以同样的方法将行为“Guide”拖拽到角色2(由演员“Button01”生成)上,此时会出现下图所示的参数对话框。通过这个对话框,可以直接指定“go to frame pTargetFrame”命令中pTargetFrame的取值。利用滑动条,在当前对话框中指定其取值为“1”。
:KAo ^5T
/x g2N#I0u

o9I8q!d A#Y]mP 奥古多媒体6Z1] X;Nn'q q(x@[
  分别对角色3、4、5进行相同的操作,只不过需要在参数对话框中指定不同的pTargetFrame取值:角色3的pTargetFrame = 5,角色4的pTargetFrame = 16,角色5的pTargetFrame = 24。
_\Xw^#A%P)cx
:K_^/Q F   从以上的操作中可以看到,此时的pTargetFrame已经成为了一个“变量”,我们完全可以根据需要指定其取值,从而避免了为不同的导航目的地编制不同的导航命令。这便是行为的强大之处。

字号: | 推荐给好友

 

评分:0

我来说两句

seccode


最新歌曲
转机 放生 黄玫瑰 摇啊摇 那滋味 擦肩而过 你若成风 幸福一辈子 依然在一起 吻得太逼真 感动天感动地 坐上火车去拉萨 怎么会狠心伤害我
心碎 冲动 小太阳 别碰我 蒲公英 爱情小偷 只要不亏 一定要爱你 等爱的玫瑰 无情的温柔 北极星的眼泪 最后一次的温柔 亲爱的那不是爱情
光荣 火花 下雨天 我可以 樱花草 为你写诗 独家记忆 再见小时候 寂寞才说爱 忘不掉的伤 爱上你是个错 第三者的第三者 孤独的时候可以抱你
假如 城府 是非题 有缘人 舍不得 我的答铃 只欠秋天 外滩十八号 越爱越难过 123木头人 爱走了心碎了 爱上你是我的错 爱情里没有谁对谁错