Director 8从入门到精通

精通篇(一)

作 者 : 胡飞

ChinaByte网络学院

   如果想作出专业级的多媒体软件,就必须精通Director;而精通Director,决不是一蹴而就的。Director的功能相当强大,要全面掌握她不是一件很容易的事。这部分将介绍一个行为库脚本的编写原理,来侧重介绍Lingo语言的使用,。

   在做多媒体教学软件时,要对学生(用户)的练习结果作正误判断。现在要求编写一个行为库脚本,对用户输入的数据进行检验。也就是要为开发人员提供一个行为脚本,该行为应具有如下功能:

          

  1. 该行为联系的对象是域文本对象,域文本的内容是任何类型的可见数据;

          

  2. 该行为提供如下接口(相对于开发人员而言):三个正确答案的参数接口,答案正确时的消息接口,答案错误时的消息接口。

       提供三个正确答案的接口是为了解决一题多解的问题。该行为要求开发人员提供的正确答案必须是1~3个,且第一个答案不为空。

         

  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

点这里收藏本站

《宇风多媒体》编制飞华统计专家网易中文排行榜版权归作者所有