Director 8从入门到精通
精通篇(一)
作 者 : 胡飞
如果想作出专业级的多媒体软件,就必须精通Director;而精通Director,决不是一蹴而就的。Director的功能相当强大,要全面掌握她不是一件很容易的事。这部分将介绍一个行为库脚本的编写原理,来侧重介绍Lingo语言的使用,。
在做多媒体教学软件时,要对学生(用户)的练习结果作正误判断。现在要求编写一个行为库脚本,对用户输入的数据进行检验。也就是要为开发人员提供一个行为脚本,该行为应具有如下功能:
提供三个正确答案的接口是为了解决一题多解的问题。该行为要求开发人员提供的正确答案必须是1~3个,且第一个答案不为空。
根据要求,经过周详的分析,编写该行为脚本如下所示:
--本行为用来检测域文本(#field)的数据是否与正确答案相符
--"Check Answer" behavior v1.0 written by Hufei , 2000/07/14
--******************************************************************
--* 当前版本只适用于域文本(#Field),并且域文本的Framing属性必 *
--* 须设置为“Limit to the field size”和“Editable”; *
--* 目前不支持文本(#Text)类型,这在以后的版本中会改进。 *
--******************************************************************
--参数说明:
--FirstAnswer: 域文本接受的第一个正确答案(由开发人员赋值)
--secondAnswer: 域文本接受的第二个正确答案
--ThirdAnswer: 域文本接受的第三个正确答案
--MessageCorrect: 如果域文本中输入的数据(指用户使用开发的最终产品
-- 时输入的数据)正确,则执行该消息(动作)
--MessageInCorrect: 如果域文本中的数据不正确,则执行该消息(动作)
--以上五个参数均由开发人员输入
--行为描述
on getbehaviorDescription
Return
"This behavior is used to check whether the text of current sprite "& Return &
"is fit in with the answer the developer given. "&"The parameters the developer" & Return &
"input are the answers, whose number can be at most three. "&Return
end getbehaviorDescription
--在打开行为库时该行为的浮动提示
on getbehaviorToolTip
return
"Drag this behavior to a sprite which member type must be #field or #text." &
"Input the answer text which format must be a string or an integer value or a float value," &
"the first answer text can not be EMPTY, other two may be EMPTY." &Return&
"Caution: In this version, the member must be a field, not a text!" &
" And the framing property of field must be "& QUOTE &"Limit to field size"& QUOTE &
"and "& quote &"Editable" & quote &"!"&Return
end
property spriteNum
property MySprite
property myMember
property MyType
property FirstAnswer
Property SecondAnswer
Property ThirdAnswer
Property MessageCorrect
Property MessageIncorrect
--检测消息,初始化精灵(域文本)
on beginsprite me
checkMessage
Initialize me
end beginsprite
--精灵退出舞台时清空
on endsprite me
sprite(me.spriteNum).member.text = ""
end
--检测消息
on checkMessage
if (MessageCorrect = "Nothing") or (MessageCorrect = "") then
MessageCorrect = "Nothing"
end if
if (MessageIncorrect = "Nothing") or (MessageCorrect = "") then
MessageIncorrect = "Nothing"
end if
end checkMessage
--初始化精灵
on Initialize me
Mysprite = sprite(me.spriteNum)
myMember = mysprite.member
MyType = MyMember.type
mymember.text = ""
--第一个答案不能为空
if FirstAnswer = "" then
alert "The correct answer can not be empty!"
end if
end Initialize
--离开当前帧时判断域文本是否为空,如果不为空,判断是否按下回车键
on exitframe me
if mymember.text <> "" then
checkEnter
end if
end exitframe
《宇风多媒体》编制版权归作者所有