首页 > 设计 > 媒体动画 > 正文

Authorware类和函数:功能强大地函数变量--Authorware6.5随意学专题(四)

2020-09-19 18:44:57
字体:
来源:转载
供稿:网友
authorware 6.5 轻松学
  第四部分 功能强大的函数变量

  authorware 6.5内部的系统函数和变量功能相当强大,简单的几行程序语句就可以完成意想不到的功能,无疑为authorware多媒体创作提供了更加广阔的空间。能否灵活使用函数变量标志着您对authorware的设计开发熟练程度,因此要提高authorware的设计开发水平,灵活使用函数和变量是关键所在。本节我们将系统地讨论authorware 6.5函数变量的基本知识及应用技巧。

  本节导读:

  一、变量的相关知识
  变量通常是用来存储程序执行过程中涉及的数据。变量可以存储的数据类型有:数值型、字符型、逻辑型,当然也可以存储以数组、列表等形式存在的数据。变量的加入,使authorware的交互编程更加灵活多变。
  (一)变量的基本定义
  (二)变量的分类
  系统变量 自定义变量 逻辑变量
  (三)变量的应用场合
  在文本框、计算图标代码编辑器、显示图标或交互图标中使用变量

  二、函数的相关知识
  函数通常指能够实现某种指定功能的程序语句段,并通过一个代号(函数名)来表示,当程序设计过程中需要实现某一功能时,只需调用事先编写好的具有实现该功能的函数,而无须重新编写,这无疑有利于程序的结构化与模块化。authorware 6.5开始支持用户的自定义函数功能,是一个革命性的创新。
  (一)函数的基本定义
  (二)函数的分类
  系统函数 外部扩展函数  authorware自定义函数
  (三)函数的使用知识
  使用authorware 6.5的内部系统函数和用户自定义函数不需要调入,直接在计算图标等函数使用场所内直接按格式粘贴使用即可,而外部扩展函数则需要导入,否则无法正常工作,本节将介绍常用的u32(ucd)和dll的函数导入方法步骤。

  三、实例剖析
  每年除夕夜人们总有“守岁”的习惯,借此总结自己一年来的得与失,迎接新的农历年的到来。让我们把计算机的系统时间调整为2003年1月31日,利用authorware 6.5一起来设计制作这个电子"羊年倒计时"程序。文章末尾提供源文件下载。
一、变量的相关知识

  (一)变量的基本定义

  变量通常是用来存储程序执行过程中涉及的数据。变量可以存储的数据类型有:数值型、字符型、逻辑型,当然也可以存储以数组、列表等形式存在的数据。变量的加入,使authorware的交互编程更加灵活多变。

  (二)变量的分类

  在authorware 6.5中,变量可以划分为系统变量、自定义变量和逻辑变量三种类型。这三种变量的使用一般都必须遵循一定的约定,下面就给大家具体讲解一下变量类型分类的相关知识。

  1.系统变量

  authorware 6.5内部提供了一系列的系统变量,它们包括cmi(计算机管理教学)、decision(决策)、file(文件)、framework(框架)、general(常规)、graphics(图形)、icons(图标)、interaction(交互)、network(网络)、time(时间)、video(视频)等共11大类,如图1所示。这些系统变量不但能够"各司其职",完成各自的功能任务;更可以"有机结合",协同完成复杂的程序需求。



图 1

  对于某些特殊的系统变量,使用时后面要有一个"@"字符再加上一个图标标题,例如"movable@"icontitle" :=false"的格式,这种语句称为引用变量,此赋值语句表示在程序执行过程不允许用户对"icontitle"图标进行任何的移动。

  提示与技巧

  time(时间)类系统变量中的"fulltime"是一个非常有用的系统变量,这个变量的不同之处在于它是一个时时变化的时间变量,且不断地随计算机系统时间的改变而改变,正是这种特殊的变化性质,在程序交互设计中显得十分有用。authorware本身有一个毛病,那就是在某些情况下对函数或变量的值的变化根本不起响应反应,例如某些场合下设计一个永久条件交互分支,设置返回类型为"return",响应条件表达式为a=0,那么本来程序只要在a=0条件下均会响应并执行该永久分支的内容,可恰恰authorware经常在这个时候发病,并不自动去检测a表达式值的变化,怎么办?此时如果我们把响应条件改为a+ fulltime=0+ fulltime,情况就大不一样了,看上去fulltime似乎显得多余,但正是这个不断变化的系统变量强迫了authorware去检查整个表达式的值而决定分支的执行与否,实在妙哉!

2.自定义变量

  自定义变量是用户根据程序设计与执行的需求而自己添加定义的变量。在authorware 6.5中可以通过调出变量分类窗口(执行菜单【window】/【variables】或快捷键ctrl+shift+v)后选择【new】按钮进行新建自定义变量操作,如图2所示;亦可在任何的变量使用场合下直接定义变量,如计算图标代码编辑器里,确定后系统会自动判断该变量为何类型变量,如果为用户自定义则提示新建之。变量名通常用英文字母+数字来表示,但是不可以出现和系统变量或已有自定义变量同名的情况,即要保证变量名表示的唯一性,否则会出现错误提示,如图3所示。



图 2



图 3

  提示与技巧

  在对自定义变量进行字符串赋值时,经常会出现字符串超长而无法直接一次性给变量赋值的情况,此时可以把长字符串拆分为几小段,然后通过连接符号"^"把它们连接起来进行赋值,例如下列程序代码最后longstring的值即为字符串"hello,i am rock! how are you?":

  longstring:="hello,i am rock!"
  longstring:=longstring^"how are you?"

  3.逻辑变量

  逻辑变量十分简单,authorware系统使用的是正逻辑,即只有true(1)或false(0)两种逻辑值代表真与假。逻辑变量经常使用于某些判断语句或函数返回值中。(三)变量的应用场合

  了解变量的类型后,我们继续来研究变量的应用场合。一般变量在authorware中的使用场合主要可以分为以下三种情况:

  1.在属性对话框的文本框中使用变量

  在设置属性对话框中,经常会遇到条件等文本框,定义的变量即可在文本框内使用,例如图4所示的电影图标属性对话框,其中的【play】域的条件文本框内即可输入包含变量的条件表达式。类似的应用场合还包括条件响应的条件表达式等等。



图 4

  2.在计算图标代码编辑器中使用变量

  最普遍的应用场合莫过于在计算图标的代码编辑器内使用变量了,这也是变量得以灵活运用的核心表现场所。变量在其中发挥了其应有的功能:存储数据、限制条件等等,充当了authorware程序设计的重要成员角色。



图 5

  3.在显示图标或交互图标中使用变量

  在显示图标或者交互图标内也可以进行变量的显示与计算,如图6所示,变量在显示图标或者交互图标内"引用"都必须使用花括号{}括起来,否则系统会默认为普通文本字符串而不作为变量使用对待。若显示变量时,需根据变量值的变化时时更新显示结果,则需要勾选显示图标或交互图标属性的"update displayed variables"。



图 6二、函数的相关知识

  (一)函数的基本定义

  函数通常指能够实现某种指定功能的程序语句段,并通过一个代号(函数名)来表示,当程序设计过程中需要实现某一功能时,只需调用事先编写好的具有实现该功能的函数,而无须重新编写,这无疑有利于程序的结构化与模块化。大部分的函数都有自己的参数,每一个参数都代表不同的意义,因此在调用函数时往往需要传递实际参数,告诉函数实现哪一部分功能。authorware 6.5开始支持用户的自定义函数功能,是一个革命性的创新。

  
(二)函数的分类

  authorware的函数功能无论大小,归纳起来有三大类型的函数:系统函数、外部扩展函数、authorware自定义函数,我们就一起来了解这方面的内容吧!

  1.系统函数

  authorware的系统函数有300多个,按其函数功能可分为18类:character(字符)、file(文件)、cmi(计算机管理教学)、framework(框架)、general(常规)、graphics(图形)、icons(图标)、jump(跳转)、math(数学)、ole(对象链接和嵌入)、platform(平台)、time(时间)、video(视频)、language(语句)、list(列表)、network(网络)、target(目标对象)、xtras等。如图7所示为



图7

  2.外部扩展函数

  外部扩展函数一般指第三方扩展开发商利用编程语言和开发工具如vc、bcb、delphi等开发的外部扩展u32(ucd)、dll(动态链接库)、xtras,封装在它们内部的函数可以供authorware调入使用。通常外部扩展函数都是实现一些系统控制功能,弥补authorware在某些方面的不足。在authorware 6.5的安装目录下就可以找到macromedia公司开发的几款外部扩展u32(ucd)。

  3.authorware自定义函数

  这是authorware 6.5开始支持的一个全新的函数定义方式:它支持把某一计算图标内的程序代码或者是存储于外部文本文件的程序代码,甚至是一段字符串程序语句,authorware 6.5都支持把它们定义为函数形式,增强了程序代码的结构化和重复使用性。如图7流程所示,其中计算图标"hello"的程序代码为:

  systemmessagebox(windowhandle, "hello,world!!", "information", 64)

  把计算图标"hello"的程序代码定义为函数形式,只要快捷键ctrl+i打开该计算图标的属性对话框,勾选"contains script function"即可,其调用函数名自然就为"hello",调用函数时使用以下语句调用即可:callscripticon(@"hello")

  至于外部文本文件或一段字符串的函数自定义方式和上述的是大同小异了,唯一不同的是调用时分别使用callscriptfile和callscriptstring系统函数进行调用。(三)函数的使用知识

  使用authorware 6.5的内部系统函数和用户自定义函数不需要调入,直接在计算图标等函数使用场所内直接按格式粘贴使用即可,而外部扩展函数则需要导入,否则无法正常工作,如何导入外部扩展函数?

  下面我们介绍常用的u32(ucd)和dll的函数导入方法步骤。

  1.执行菜单【window】/【functions】或快捷键ctrl+shift+f打开函数列表窗口,在【category】函数分类列表下选择欲导入函数的a6p或a6l文件,此时按钮"load…"变为可用状态。

  2.单击按钮"load…"后选择欲导入的函数库,即u32(ucd)或者dll文件。

  3.假如是导入u32(ucd)内封装的函数,则会出现如图8所示的界面,此时选择好欲导入的函数后单击按钮"load"导入即可。如果要在函数列表中同时导入多个函数,可以按住"ctrl"同时用鼠标进行点选。假如是导入dll内封装的函数,则会出现如图9所示的界面,输入相关的函数名和参数类型后单击按钮"load"即可,成功导入后在窗口的左下角有一提示信息。如此重复导入其它的dll函数,导入完毕后单击按钮"done"结束dll函数导入工作。



图 8


图 9

  好,终于把authorware 6.5的变量和函数的相关知识介绍完毕,为了加深大家的印象,我们亲自动手来制作一个"羊年倒计时"吧!
三、函数变量使用范例

  (一)范例设计说明

  每年除夕夜人们总有一个"倒计"的习惯,借此总结自己一年来的得与失,迎接新的农历年的到来。让我们把计算机的系统时间调整为2003年1月31日,利用authorware 6.5一起来设计制作这个电子"羊年倒计时"程序。程序执行预览如图10所示。


图 10

  (二)范例流程设计

  "羊年倒计时"的完整程序流程如图11所示,下面我们来剖析一下制作过程。


图 11

  1.程序初始化与背景设计

  首先我们需要确定的是农历癸未年(羊)大年初一是2003年2月1日,因此我们在计算图标"spring festival"内首先设定此时间,输入代码:spring:=datetonum(1,2,2003)

  其中datetonum系统函数是把时间转换为数字表示形式,方便后面程序流程的时间比较。接着当然是设计导入一背景:显示图标"showtime",如何设计看读者自己喜好。

  2.时间的计算判断交互设计

  如图11所示我们需要设计两个条件交互分支,分别响应"到达羊年"与"未到达羊年"两个时间判断事件。

  其中"未到达羊年"分支的响应条件设置为:year<2003|(year=2003&month<2)

  即当时间未到2003年2月1日时响应,其响应分支二级流程的计算图标"settext1"代码如下:

  chnyear:="农历壬午年【马】" --//当前的农历年提示
  showtip:="距农历癸未年【羊】还有:"
  nowday:=datetonum(day, month, year) --//转换当前时间为数字表示形式
  stepday:=spring-nowday --//计算距离羊年的时间间隔(数字形式)

  这里的"chnyear"、"showtip"、"nowday"、"stepday"均为自定义变量,在程序执行倒计过程中存储一些时间的相关提示信息。

  而二级流程中的显示图标"horse"显示的就是最后的时间倒计信息,如图12所示,其中用文本工具写入的是距离农历羊年的剩余时间计算表达式,即倒计时间:

  {stepday-1}天{23-hour}小时{59-minute}分钟{60-sec}秒

  为了保证这个倒计时间时时更新,当然你需要把显示图标"horse"的"update displayed variables"勾选上。


图 12

  继续"到达羊年"的交互分支,其响应条件设置为:year>2003|(year=2003&month>=2)

  即当时间到达2003年2月1日零点时响应,其响应分支二级流程的计算图标"settext2"代码如下:

  eraseicon(iconid@"horse") --//擦除旧历马年图标
  displayicon(iconid@"showtime") --//更新背景时间显示
  chnyear:="农历癸未年【羊】" --//当前的农历年提示
  showtip:=""

  农历羊年到啦,显示图标"sheep"设计导入的就是一副新年喜庆图。

  3.全部流程设计完毕,存盘后按"f12"一键发布,此时就可以执行测试一下咯,如图13所示是"倒计"结束,到达羊年时的显示界面。


图13

  源文件下载


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