上一篇 | 下一篇

编写自己的行为 (下)

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

  四、完善自己的行为
TJmHl^3m 奥古多媒体{R{F*fvQ
  虽然“Guide”行为已经能够发挥其应有的作用,但离完整的行为还有一段距离,下面让我们来对其进行一些完善。奥古多媒体~J#nKi6D pL [
奥古多媒体E,mD)E)D C'b
  1. getPropertyDescriptionList函数的使用奥古多媒体6a yvS1K[

9Hdpfd1D4{)g7nyPx   在编写上面的“Guide”行为时,我们使用了一个名为“getPropertyDescriptionList”的函数,那么这个函数具体有什么作用呢?奥古多媒体hL6Zcl6k@H

$@qTqf   getPropertyDescriptionList函数实际上返回的是一个属性列表,而其中的属性和属性值是利用列表命令addProp添加的。具体到这个“Guide”行为来说,此属性列表中只有一个属性“#pTargetFrame”,而其值仍然是一个列表[#comment: "Go To Frame", #format: #integer, #range: [#min: 1, #max: 25], #default: 1]。使用getPropertyDescriptionLIst函数,可以建立一个参数对话框,其中#comment用来显示参数的描述信息,#format用来限定参数的取值类型,#range用来限定参数的取值范围并确定参数的取值,default为参数的缺省值。要注意的是,#range属性并不是必需的。如果没有#range属性的话,则需要手动输入一个参数的取值。奥古多媒体'Je)eM(t%]

5alP6e3\ L w

\;]%{ ]!kp.CE
B@ y/T%eI   2. runPropertyDialog函数的使用
^7t3S^.k[.o1} 奥古多媒体o$k5r/v0L?pd
  在某些情况下,我们希望行为能够半自动地设置其参数,而无需每次使用时都进行手动设置,此时runPropertyDialog函数便发挥作用了。例如,我们可以为“Guide”行为添加下面的代码:奥古多媒体8ZjTo uxY.Ct0j
奥古多媒体R!]&il!jCbwM[L
on runPropertyDialog me, list奥古多媒体 TV8g{5@.fm
 setProp list, #pTargetFrame, 7奥古多媒体:x6iFyQ;A ^%q
 pass
%}ul }.Jq `*Q1Xf0]8}  return list奥古多媒体/@bAZ+h!\2c
end
u(V5UnY$CXi 奥古多媒体$?lp n9\
  现在如果将这个行为拖拽到一个角色上的话,会出现下面的参数对话框:奥古多媒体7u2^MFS/a

SgBo|k
奥古多媒体BoR^H(u;l
奥古多媒体aRdWe`E7Z
  这便是runPropertyDialog函数的作用:使用属性列表命令setProp将pTargetFrame的取值预设为7,从而无需我们手动设置。更为“神奇”的是,如果去掉其中的“pass”命令,参数对话框将不会出现,但setProp命令仍然有效,这样便实现了参数的半自动设置。
n$~L9Yx&P*Y
Y f9Y&Q%g wwEuly#y   3. isOKToAttach命令的使用奥古多媒体u*Y8B%Pvg
奥古多媒体3@3N @8E;@8n)QZW
  此命令的含义显而易见,即检测行为是否“is OK To Attach”,当我们需要限定行为的使用范围时,就可以利用isOKToAttach命令。试着将下面这段代码加入“Guide”行为中:
M9R-K8hayRJg 奥古多媒体DUc2V/U f
on isOKToAttach me, spriteType, spriteNum奥古多媒体5]l}9}1hH sz;k
 if spriteType = #graphic then奥古多媒体[j x4nq}D;~D
   if sprite(spriteNum).member.type = #button then奥古多媒体7V?F Q?#S1H,w7Ynw
     return TRUE
Q]&urE    else奥古多媒体8w(OTj!EB
     return FALSE奥古多媒体dJ7y:xXJ
   end if
] yM R#A  end if奥古多媒体 n:Q R;P/e l
end奥古多媒体"h^[K/TH

b$F[ay#v9\8f   如果现在再拖拽这个行为就会发现,它不会像以前那样可以被添加到任意的角色上,因为此时isOKToAttach命令已经限制其“只能添加给#button类型的演员生成的角色”。当然,对于isOKToAttach命令,除了#button以外,还有许多可供我们选择的参数,在这里就不一一列举了。奥古多媒体GtO3CzsW
奥古多媒体n)@5A(j7i!G|@9m%L
  4. getBehaviorDescription函数和getBehaviorTooltip函数的使用奥古多媒体AH8a&eh j6P$k3h

R7Kq}^(R   与其他的部分相比,getBehaviorDescription函数和getBehaviorTooltip函数的作用就不是那么重要了,不过它们仍然是构成完整行为的两个有机部分。奥古多媒体i \L1G0FN2W*m#Q6~$g
奥古多媒体9? ` i7ru
  如图所示,getBehaviorDescription函数返回一个字符串,并将其显示在行为监察窗内:奥古多媒体 v~W;}(~b{
奥古多媒体 tz2E/N3| GN"q

(ee"J#y6i$xRxM
(gD5wK"k;p"u Tm   而getBehaviorTooltip函数的作用更为简单:将一个返回的字符串作为其所属行为在库面板中的一个“Tool tip”。只有当我们将一个行为添加到库面板后,才需要这一功能。奥古多媒体^B1c7Q6F S
奥古多媒体*E_2[ x-Yl,oe

G!F1T&o.M'J a/c 奥古多媒体9dc1Lq Q@E;d O D
  五、一点说明奥古多媒体/cHaEl;g2Y
奥古多媒体@*{ I L3t9Y
  虽然我们编写的这个“Guide”行为本身非常简单,但却涵盖了一个完整行为所涉及的全部内容,因为无论一个行为多么复杂,其本身均由下面几部分组成:奥古多媒体V9F0i4T|b7kF
奥古多媒体 ~)MB+E;L z;d"x gmq.^
  * Property变量的声明奥古多媒体1C+d*uo_,cUz
  * getPropertyDescriptionList函数
:n)b \#v/`/Kj T   * runPropertyDialog函数
X}q#C6C5f'R/N   * isOKToAttach命令
G"g ]6gJ;iO:L   * getBehaviorDescription函数
;R$TRxm   * getBehaviorTooltip函数奥古多媒体*~N!e6jp(|f.i ch
  * 行为主体代码奥古多媒体C(Rue H]/f/HS
奥古多媒体.o}u0K6E;m
  当然,这七个部分并不都是必需的。一般情况下,只需包含Property变量的声明、getPropertyDescriptionList函数和行为主体代码即可。奥古多媒体:} `:w&o.O

a.l$M&fhR.|A   只要把握住以上几点,我们便可以举一反三,编写更多的自定义行为来满足不同的需求。如果在编写行为时遇到了困难,可以参考Director库面板内置的一些简单行为,会有不小的收获。
(EW8S8Ek2R`/hw
-K.~ Pljv4z!o   奥古多媒体,v b v&ekZOL#R.r
" target="_blank">相关附件

字号: | 推荐给好友

 

评分:0

我来说两句

seccode


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