首页 > 网站 > 媒体动画 > 正文

Director基础教程:Director 设计自己地行为(续)

2024-09-08 19:27:08
字体:
来源:转载
供稿:网友
director 编写自己的行为(续)
   在《编写自己的行为》一文中,我们已经从理论上对行为的结构有所了解,现在我们通过一个"多态按钮行为"的编写来从实践角度加深对行为的认识。

一、何谓"多态按钮"

   在各种多媒体产品的图形用户界面中,多态按钮都拥有非常广泛的应用。所谓的"多态",即对于鼠标的不同操作可以有不同的响应方式,这些方式表现为按钮或鼠标形态的改变,同时发出提示声音或给出提示画面,并且执行相应的操作。总之,一个完整的多态按钮能够响应用户的不同操作并完成各种指定的任务。

windows的"开始"按钮便是一个简单的多态按钮

二、多态按钮的功能

   一个多态按钮的主要功能包括:
   * 鼠标进入后按钮本身呈掠过状态。
   * 鼠标点击时按钮本身呈按下状态。
   * 按钮被成功点击后执行相应的命令。
   * 当鼠标位于按钮内部时改变光标形态,离开按钮时恢复光标形态。
   * 在整个过程中会有操作提示音(或提示画面)。

一个典型的多态按钮

三、多态按钮行为的编写

   新建一个剧本演员,命名为"multistate button behavior",不要忘记将其属性更改为"behavior"。

   首先,我们需要声明即将使用的属性变量。

property pnormalmember -- 用来存储按钮的正常状态。
property puserolloversound, prolloversound -- 掠过按钮时是否发出声音,使用的声音演员。
property puserollovermember, prollovermember -- 掠过按钮时是否改变演员,改变后的演员。
property pusedownsound, pdownsound -- 按下按钮时是否发出声音,使用的声音演员。
property pusedownmember, pdownmember -- 按下按钮时是否改变演员,改变后的演员。
property pcustomguide -- 成功点击按钮后所执行的自定义导航命令。
property pusechangecursor -- 是否根据鼠标与按钮的不同位置改变鼠标的形态。
property pchangecursor -- 改变后的鼠标形态。

   下面的getpropertydescriptionlist函数看起来好像非常复杂,其实无非是给需要使用的属性变量构建参数对话框,每一项参数都拥有#comment、#format和#default这三个必需的部分。

on getpropertydescriptionlist me
   mylist = [:]
addprop mylist, # puserolloversound, [ # comment: "use rollover sound" , # format: # boolean, # default: true ]
addprop mylist, # prolloversound, [ # comment: "rollover sound" , # format: #sound , # default: "" ]
addprop mylist, # puserollovermember, [ # comment: "use rollover member" , # format: # boolean, # default: true ]
addprop mylist, # prollovermember, [ # comment: "rollover member" , # format: # bitmap, # default: "" ]
addprop mylist, # pusedownsound, [ # comment: "use down sound" , # format: # boolean, # default: true ]
addprop mylist, # pdownsound, [ # comment: "down sound" , # format: #sound , # default: "" ]
addprop mylist, # pusedownmember, [ # comment: "use down member" , # format: # boolean, # default: true ]
addprop mylist, # pdownmember, [ # comment: "down member" , # format: # bitmap, # default: "" ]
addprop mylist, # pcustomguide, [ # comment: "custom lingo" , # format: #string , # default: "" ]
addprop mylist, # pusechangecursor, [ # comment: "use change cursor" , # format: # boolean, # default: true ]
addprop mylist, # pchangecursor, [ # comment: "change cursor" , # format: #cursor , # default: "" ]
return mylist
end

   这里需要注意一下#format和#default的取值。

# format的取值多种多样,但主要可以分为两类:
1 . 数据类:包括#integer、#float、#string、#symbol和#boolean等。
2 . 非数据类:包括#member(也可以具体写出#member的类型,例如#bitmap即表示位图演员)、#frame、#marker和#ink等。

   而#default的取值则可以是数字、布尔值(true或false,仅当#format为#boolean时)或字符串。一般情况下,#default的取值是依赖于#format的,但要求也不是很严格,毕竟#default只是为属性列表的每个属性提供一个缺省值,最终的使用值还是需要我们自己在参数对话框中指定。

   其实#default还可以指定为void,以表示没有合适的缺省值,但并不推荐使用,原因在于:
1 . 数字、布尔值和字符串已经几乎可以囊括#default所有的取值情况,并不需要再增添一个void。
2 . 如果getpropertydescriptionlist函数返回的属性列表中有任何一个属性的缺省值被指定为void,则在使用runpropertydialog函数时系统会报错。

   下面我们添加runpropertydialog函数。其实在这里并没有什么使用runpropertydialog函数的必要,仅仅是为了熟悉它。

on runpropertydialog me , mylist
setprop mylist, # pcustomguide, "go to frame 5"
pass
return mylist
end

[1] [2] 下一页  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表