牛津中小学英语网

 找回密码
 注册

QQ登录

只需一步,快速开始

Authorware 7.0多媒体光盘实例开发

wqyzh 2007-1-23 19:24 [复制链接]
<p class="MsoNormal" style=""><span style="" lang="EN-US">Authorware</span><span style="font-family: 宋体;">凭借其先进、丰富的可视媒体制作解决方案,不但能够将图像、声音、动画、文字以及电影等元素融合到多媒体程序中,还可以连接数据库,具有内建的学习数据跟踪、进度检查、结果统计等辅助功能。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  本文向你全面讲述利用</span><span style="" lang="EN-US">Authorware 7.0</span><span style="font-family: 宋体;">开发多媒体教学光盘的制作要领。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  一、多媒体光盘开发流程分析</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  多媒体教学光盘就是借助动画、解说、趣味游戏等多媒体表示方式,把复杂、乏味的理论知识表现得活灵活现,使之达到理想的学习效果。有的多媒体教学光盘甚至还可以对学生的学习进度、绩效等进行评估管理,成为真正意义上的多媒体教学系统平台。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  目前市面上的多媒体教学光盘数不胜数,下面我们就以多媒体教学光盘开发案例,剖析它的详细开发设计过程。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  </span><span style="" lang="EN-US">1.</span><span style="font-family: 宋体;">项目分析</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  在多媒体教学光盘开发项目分析过程中,一般必须包括以下几点内容:</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  </span><span style="" lang="EN-US">(1)</span><span style="font-family: 宋体;">光盘结构规划</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  从多媒体教学光盘内容方面考虑,一般根据其教学内容进行栏目划分,最普遍的做法就是按照内容分章分类进行规划;此外一般还需要规划包括光盘系统的使用帮助、版权说明等其他的辅助性栏目。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  例如这里我们要讲解的《电子技术基础》多媒体教学光盘,其内容一级栏目结构如图</span><span style="" lang="EN-US">1</span><span style="font-family: 宋体;">所示,主要包括各章的教学内容及系统帮助共</span><span style="" lang="EN-US">14</span><span style="font-family: 宋体;">个一级栏目。一级栏目主要表现在光盘的主界面上。另外根据各栏目内容的需要,还可以在一级栏目下继续划分二级、三级子栏目等。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  从多媒体光盘文件结构方面考虑,一般较大型的多媒体作品都做成一个主文件</span><span style="" lang="EN-US">+(</span><span style="font-family: 宋体;">调用</span><span style="" lang="EN-US">)</span><span style="font-family: 宋体;">多个分支模块文件</span><span style="" lang="EN-US">+(</span><span style="font-family: 宋体;">共享</span><span style="" lang="EN-US">)</span><span style="font-family: 宋体;">一个或多个库文件的形式。《电子技术基础》多媒体教学光盘即是按照图</span><span style="" lang="EN-US">2</span><span style="font-family: 宋体;">所示的典型程序文件结构开发的,包括主程序文件、各章节模块文件以及公用的库文件。通过主文件调用各章节模块文件,这样的做法既有效地降低主文件的大小,加快执行速度,又符合项目管理的科学规定。另外把一些重复公用的多媒体元素如图片等存放到库文件中,供主文件和各章节模块文件随时调用。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  </span><span style="" lang="EN-US">(2)</span><span style="font-family: 宋体;">光盘功能规划</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  多媒体教学光盘包括的基本功能有片头动画控制、背景音乐控制、内容导航控制、学习进度存取等。如果是具有反馈绩效的交互式学习光盘系统,则还需要包括数据库统计、用户管理等功能。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  在《电子技术基础》多媒体教学光盘中,主程序文件主要功能模块包括片头控制、初始化设置、背景音乐控制、章节内容导航、系统退出设计、学习进度读取等。而各章节程序功能模块则包括文字解说控制、小节内容选择与导航、学习进度保存、返回主文件界面等。如图</span><span style="" lang="EN-US">3</span><span style="font-family: 宋体;">所示即为章节程序功能模块操作界面。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  </span><span style="" lang="EN-US">(3)</span><span style="font-family: 宋体;">光盘界面规划</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  界面设计要注意结构简单、按钮醒目、导航便捷,易于操作,注重内容的展示,而非只为追求界面效果而忽略内容的直观展示,即必须遵循突出主题、简洁直观、通俗易懂等原则。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  </span><span style="" lang="EN-US">(4)</span><span style="font-family: 宋体;">操作方式规划</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  多媒体教学光盘以光盘的形式出版发行给客户,客户群体大都为非电脑技术人员,因此要求操作简单、程序流程简洁明了、交互性强、提示信息明确,应采用醒目的按钮方式来作为交互的方式,同时加上快捷的导航控制等。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  </span><span style="" lang="EN-US">2.</span><span style="font-family: 宋体;">项目策划</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  按照项目分析结果制定项目的总体策划方案,其内容除详细规定项目分析中提到的以外,还应有人员分工、素材界面和程序制作的时间表、工作流程的描述、各栏目详细内容等,根据具体项目添加相应的策划内容。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  </span><span style="" lang="EN-US">3.</span><span style="font-family: 宋体;">素材整理及程序功能模块准备</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  按照总体策划方案的要求和规定,整理界面及动画制作所需要的图片、动画、声音素材和程序中涉及的</span><span style="" lang="EN-US">Authorware</span><span style="font-family: 宋体;">程序常用模块,并整理归类放到工作目录中备用。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  在策划分析中我们提到多媒体教学光盘一般包括有程序初始化流程、片头交互控制、背景音乐控制、教学内容导航、学习进度存取、程序打包发行等功能设计,下面我们就以</span><span style="" lang="EN-US">Authorware 7.0</span><span style="font-family: 宋体;">作为开发平台对这些功能模块进行详细剖析,讲解其功能的实现思路与流程设计过程。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style=""><span style="font-family: 宋体;">  </span><span style="" lang="EN-US"><o:p></o:p></span></p>
最新评论 | 正序浏览
发表于 2007-1-23 19:25:01
二、初始化流程设计

  一般的商业多媒体教学光盘,为了达到更好的执行效果,对系统的设置等有一定的条件要求。例如为了达到全屏幕执行效果,可以暂时改变客户电脑的屏幕分辨率;为了防止光盘程序执行时被其他应用程序窗口遮挡,可以把光盘应用程序设置为最顶层窗口;为了正确显示教学内容,必须为客户电脑安装指定的字体等,所有的工作都是在初始化流程设计里实现的。

  在程序流程序设计窗口中,加入一个“Calculation(计算)”图标,将其命名为“程序初始化”,然后双击打开代码编写窗口,输入以下初始化代码:

  --//完成全屏幕执行效果

  --//以下代码获取当前用户屏幕相关设置

  UserSetting:=alGetCurrentDispSet()

  UserSetting:=Replace("x","\r",UserSetting)

  --//以下代码保存当前用户的屏幕设置参数

  UserWidth:= GetLine(UserSetting,1)

  UserHeight:= GetLine(UserSetting,2)

  UserDepth:= GetLine(UserSetting,3)

  UserRefresh:=GetLine(UserSetting,4)

  --//以下代码指定当前用户屏幕设置参数

  alChangeRes(800,600,16,75)

  --//以下代码隐藏Windows任务栏

  alHideTaskBar()

  --//完成其他初始化工作

  --//以下代码设定光盘程序演示窗口大小

  ResizeWindow(800,600)

  --//以下代码设置光盘程序标题

  SetWindowText(WindowHandle,"多媒体教学光盘")

  --//以下代码使光盘程序居顶

  SetWindowPos(WindowHandle,-1 ,0,0,0,0,3)

  --//以下代码安装光盘程序所需字体文件

  AddFontResource(FileLocation^"FZDHTJW0.TTF")

  SendMessage(WindowHandle,29,0,0)

  --//以下代码初始化自定义变量

  Initialize(Rock)

  --//以下代码指定光盘程序退出执行图标

  ExitIcon:=IconID@"退出系统"

  在上述初始化代码中,我们借助了2个Authorware的外部扩展函数库,即Winapi.u32和alTools.u32(2.0版本)来实现一些Authorware 7.0系统函数无法实现的初始化功能。

  在全屏幕设置初始化过程中,我们利用了alTools.u32的3个函数,即alGetCurrentDispSet、alChangeRes、alHideTaskBar。首先利用alGetCurrentDispSet函数取得用户当前的屏幕设置参数,其参数返回形式类似“1024×768×32×85”,因此我们必须利用Replace系统函数做相应处理才能实现相关屏幕参数的分离,其中刷新率参数是我们需要获取的,因为Authorware 7.0系统函数本身无法实现屏幕刷新率参数获取的功能。分离出来的参数自然需要保存起来,接着利用alChangeRes函数强制改变用户的屏幕分辨率符合光盘程序的全屏要求。在这里保存当前用户原始屏幕参数的过程是必须的,因为在光盘程序退出时必须恢复用户原本的屏幕设置,否则就会令光盘程序显得不够“文明”,令人难以接受。既然是需要满屏幕的执行效果,当然Windows操作系统的任务栏也需要暂时隐藏起来,alHideTaskBar就是实现这样工作的函数。

  在接下来的其他初始化过程中,我们利用了Winapi.u32中的一些API系统控制函数完成了诸如光盘程序标题设置、应用窗口居顶、系统字体安装等功能。当然我们还需要根据实际情况初始化某些自定义变量。最后我们还指定了系统变量ExitIcon:=IconID@"退出系统",即指定程序退出时执行“退出系统”图标,因此我们必须在“退出系统”图标里放置执行恢复用户系统原始设置的代码:

  --//以下代码恢复用户屏幕的原始设置

alChangeRes(UserWidth,UserHeight,UserDepth,UserRefresh)

  --//以下代码显示Windows任务栏

  alShowTaskBar()

  --//以下代码退出光盘程序系统

  Quit(0)

  至此,光盘程序初始化流程设计框架初步完成,需要强调初始化代码一般放置在流程的最开始处执行,如图4是一个典型的功能参考流程图。

  
发表于 2007-1-23 19:25:31
三、片头动画的交互设计

  常用的片头动画类型一般有两种:利用3D MAX等软件制作的三维动画以及利用Flash软件制作的Flash动画。在这里,我们讲解Authorware 7.0中实现Flash片头动画的交互控制。

  1.导入Flash片头动画

  单击“Insert(插入)→Media(多媒体)→Flash Movie…(Flash影片)”菜单命令,在打开的“Flash Asset Properties(Flash道具)”对话框中导入即可。为了加快Flash动画的运行速度,减少内存占用,在该对话框中可以选中Flash动画属性的“Direct to Screen(直接返回屏幕)”选项。这里把插入流程线中的Flash动画图标命名为“Flash动画”。

  2.Flash动画交互控制设计

  作为多媒体教学光盘系统的片头动画,我们需要实现这样的操作控制:在片头动画的播放过程中,允许用户直接通过单击鼠标左键,跳过Flash片头动画的播放而直接进入光盘程序的主流程界面;若用户不执行任何操作,则Flash片头动画播放完毕后自动进入执行光盘程序的主流程。

  在片头流程线图中,在“Flash动画”图标后添加一个决策图标“判断”,同时在决策图标右边添加一空内容的群组图标。按下Ctrl+I组合键打开决策图标“判断”的属性面板,设置决策图标“Repeat(重复)”的属性为Until True直到条件为真,“Branch(分枝)”属性为Sequentially顺序执行,并设置其判断条件为:

 ~GetSpriteProperty(@"Flash动画", #playing)|MouseDown

  这样,无论是在用户单击鼠标左键“干预”的情况,还是自动播放完毕都将自动进入程序主流程。在进入程序主流程之前,我们必须利用“擦除”图标清除不再起作用的Flash片头动画,并放置一个等待图标,让程序暂停0.5秒达到和谐的过渡效果,之后才进入光盘的主流程界面执行其他程序内容。最后的参考流程如图5所示。

  四、光盘背景音乐的交互设计

  多媒体教学光盘一般都需要背景音乐及内容解说,内容解说一般多以预先录制的WAV等格式的声音文件,在Authorware 7.0中只要使用声音图标导入,并利用MediaPause、MediaPlay、MediaSeek等系统函数即可轻松控制。因此我们不做详细介绍,这里我们更加关心的是整个光盘背景音乐的交互控制设计。

  光盘背景音乐主题常常与光盘教学内容主题相关,让用户更加专心融入光盘的主题内容上。为了防止与内容解说产生格式冲突,一般选取MIDI作为背景音乐,下面我们以MIDI作为背景音乐,讲解其在多媒体教学光盘中的交互控制设计思路。

  背景音乐的交互控制包括对背景音乐的随机选曲播放、停止等功能;另外当光盘程序处于非活动状态时,还应该暂停背景音乐的播放,当再次进入活动状态时则重新播放背景音乐。

  对于MIDI背景音乐进行播放、停止的控制方法也许读者早有所闻,利用Authorware的外部扩展函数即可实现。但是对于上述的另外一个功能,读者听了肯定“不知所以然”,其实利用API函数也是一件容易实现的事情,且看图6所示的程序流程图,它即可实现上述所说的背景MIDI音乐控制功能,一起来剖析一下其设计过程。

  首先讲述Authorware外部扩展函数库MidiLoop.u32与budapi.u32。MidiLoop.u32是一个循环播放MIDI音乐的外部扩展函数库,它虽然只封装了两个函数:LoopMidi、StopMidi,但是对于常规背景音乐的控制却已经足够了。budapi.u32则是一个功能强大的API扩展函数库,其封装的API函数种类繁多,在Authorware中只要灵活运用它们,常常可以实现不可思议的功能。

  1.MIDI背景音乐的播放

  如图6所示的程序流程,在计算图标“播放音乐”中我们利用LoopMidi函数进行MIDI音乐的播放,但是为了充分考虑用户机器的不同配置情况,因此必须首先利用budapi.u32的baSoundCard函数判断用户机器是否已经安装了声卡,如果已经安装则执行背景音乐播放,否则不允许播放任何背景音乐操作。“播放音乐”的程序代码如下:

  --//如果安装了声卡则播放音乐

  if baSoundCard() then

midi:=1 Test(midi,LoopMidi(FileLocation^"music\\music_"^Random(1, 5, 1)^".mid"),StopMidi())

  end if

  上述代码中自定义变量midi是作为Test系统函数的判断参考变量。Test系统函数的语法为:

  Test(condition, true expression, false expression)

  因此,当条件变量midi=1时执行Test函数的条件真分支;当midi=0时则执行Test函数的条件假分支。而系统函数Random则是作为随机取值,并由此处理产生一随机MIDI文件名然后进行播放。

  2.MIDI背景音乐的交互控制

  背景音乐的交互控制是通过交互响应来实现的。在光盘程序的执行过程,用户始终可以通过按钮控制MIDI音乐的播放与停止。如图6所示,在计算图标“播放音乐”后添加一交互图标并命名为“音乐控制”,接着在交互图标右边添加三个计算分支。

设置“停止/播放”分支为按钮响应交互,其功能是实现对MIDI背景音乐的停止与播放。在整个光盘程序执行过程中它都是有效的,因此必须设置其为永久按钮,即选择“Perpetual”属性选项,同时设置“Active If”条件为:baSoundCard(),即检测到用户没有安装声卡的情况下该按钮及响应分支无效。计算图标“停止/播放”的程序代码如 midi:=~midi Test(midi,LoopMidi(FileLocation^"music\\music_"^Random(1, 5, 1)^".mid"),StopMidi())

  交互图标“音乐控制”的另外两个永久条件响应分支是处理光盘程序窗口在活动与非活动状态下的MIDI背景音乐控制问题。这里会涉及到一个难题:如何判断光盘程序窗口的活动状态变化呢?单靠Authorware 7.0的系统变量函数是无法实现的,因此我们借助了强大budapi.u32的一个API函数baActiveWindow,并结合Authorware方便的条件交互判断来实现。

  当光盘程序窗口处于非活动状态时,根据Windows系统的窗口消息机制,此时的活动窗口句柄值一定不等于Authorware的句柄变量WindowHandle,因此只要在光盘程序运行期间时时地检测当前活动窗口的句柄值,并与Authorware本身的句柄变量WindowHandle做比较,即可判断当前光盘程序处于活动还是非活动状态。此时又出现一个问题:如何让Authorware程序实时进行条件分支判断?这里有一个小技巧,那就是利用系统变量Sec,因为Sec变量本身就是一个时时变化的变量,正是它的时时变化性迫使程序不断地检测条件的变化情况,从而响应相应的分支。

  当光盘程序窗口由活动状态切换到非活动状态时,此时需要停止MIDI背景音乐的播放,其响应判断条件是:baActiveWindow()+Sec<>WindowHandle+Sec,其执行代码如下: if baSoundCard() then

     midi:=0

     StopMidi()

  end if

  当光盘程序窗口再次从非活动状态切换到活动状态时,此时需要重新播放MIDI背景音乐,其响应判断条件是:baActiveWindow()+Sec=WindowHandle+Sec,其执行代码如下: if baSoundCard() then

   midi:=~midi

Test(midi,LoopMidi(FileLocation^"music\\music_"^Random(1, 5, 1)^".mid"),StopMidi())

  end if

  最后需要提醒的是,需要预览上述的程序窗口切换过程对背景音乐的影响,必须打包程序然后执行才能预览到效果,因为它使用了API窗口函数,而某些API函数在Authorware文件编辑状态下是不起任何作用的,必须打包后才有效。

  五、光盘内容的导航设计

  一个完整的多媒体教学光盘往往内容繁多,因此必须设计一个合理的教学内容导航,否则用户学习操作起来会比较麻烦。

  1.主文件与各章节之间的导航设计

  在光盘结构规划中我们讲述了《电子技术基础》多媒体教学光盘章节内容的栏目划分,因此,在流程设计中,我们必须为这些栏目设计导航,图7所示即为主程序光盘内容导航的一个典型设计流程图。我们通过Authorware 7.0的导航图标,为各章节内容设置交互导航,这样的流程设计使整个主程序流程结构清晰,可读性强。《电子技术基础》多媒体教学光盘的文件结构是主—分结构,即主文件调用各章节模块文件的方式,因此在主文件的章节内容中实际存放的是一个起链接桥梁作用的调用脚本,而具体的教学内容则放在各章节的模块文件内,以下即为某章节的调用参考代码,通过系统函数JumpFileReturn调用执行第一章的程序模块文件Part1.exe。

  JumpFileReturn(FileLocation^"Part"^"\\Part1.exe")

  2.各章节的内容导航设计

  一般根据光盘教学内容,各章节栏目下还细分具体小节内容,这部分如何实现导航呢?如果依然按照主界面的排列按钮导航方式,必定会占用栏目界面的空间,而各章节栏目的界面应该把更多的地方留给教学内容的演示,因此这里我们采用弹出菜单来实现章节各小节内容的导航。

  首先,我们介绍Authorware外部扩展函数库tMsControls.u32,这是一个专门创建Windows标准弹出菜单的外部扩展函数库,其弹出菜单效果如图8所示。下面我们看看具体的流程设计。

  (1)创建弹出菜单

  在弹出菜单的过程中,首先利用tMsControls.u32的tMsCreatePopupList函数创建弹出菜单,创建完毕后会返回一句柄值并保存在自定义变量popupHandle中,此句柄即可代表弹出菜单本身,是一个重要参数。

创建完毕后接着就是添加具体菜单项内容,参考代码如下:

  --//创建弹出菜单,并返回其标识句柄

  popupHandle:=tMsCreatePopupList(WindowHandle)

  --//设置一级菜单内容

  tMsAddItem(popupHandle, 1, 0, "《电子技术基础》多媒体课件")

 tMsAddItem(popupHandle, 2, 0, "-")

 tMsAddItem(popupHandle, 3, 0, "第一章 半导体二应用")

 tMsAddItem(popupHandle, 4, 0, "-")

 tMsAddItem(popupHandle, 5, 0, "第1节 半导体二极管")

 tMsAddItem(popupHandle, 6, 0, "第2节 特殊二极管")

 tMsAddItem(popupHandle, 7, 0, "第3节 整流滤波电路")

 tMsAddItem(popupHandle, 8, 0, "-")

  --//设置第1节的二级菜单内容

 tMsAddItem(popupHandle, 5, 1, "(1) 半导体的基础知识")

tMsAddItem(popupHandle, 5, 2, "(2) 二极管的单向导电性")

 tMsAddItem(popupHandle, 5, 3, "(3) 二极管的伏安特性")

 tMsAddItem(popupHandle, 5, 4, "(4) 二极管的重要结论")

  (2)菜单交互导航设计

  菜单建立完毕后,此时菜单是不可见的,当需要时让菜单弹出即可。我们把弹出菜单的操作以及相关菜单项的选择交互设计在一个按钮响应交互分支中,如图8所示,单击“内容选择”按钮即可弹出内容导航菜单,需要时弹出,不需要则自动隐藏消失。其参考代码如下:

  --//弹出显示菜单

result:=tMsDisplayControl(popupHandle,380,CursorY-132,150, 100,1)

  --//根据用户选择菜单跳转显示相关小节内容

 if result="第1节 半导体二极管:(1) 半导体的基础知识" then GoTo(IconID@ChildNumToID(@"第一章内容",1,0))

 if result="第1节 半导体二极管:(2) 二极管的单向导电性" then GoTo(IconID@ChildNumToID(@"第一章内容",2,0))

  if result="第1节 半导体二极管:(3) 二极管的伏安特性" then GoTo(IconID@ChildNumToID(@"第一章内容",3,0))

  if result="第1节 半导体二极管:(4) 二极管的重要结论" then GoTo(IconID@ChildNumToID(@"第一章内容",4,0))

 if result="第2节 特殊二极管" then GoTo(IconID@ChildNumToID(@"第一章内容",5,0))

  if result="第3节 整流滤波电路" then GoTo(IconID@ChildNumToID(@"第一章内容",6,0))

  在上述代码中,自定义变量result用于保存用户选择的菜单项对应的菜单标题;另外各小节的具体内容是存放于框架图标下的,因此根据result值的判断,利用系统函数GoTo即可进入对应的小节进行内容演示与学习。最后的菜单导航参考流程如图9所示。
发表于 2007-1-23 19:25:41
六、学习进度存取的流程设计

  在教学光盘的学习过程中,学生往往需要记录自己的学习进度,方便下次学习时直接进入继续学习。记录的内容可以包括章节学习情况、学习成绩等,《电子技术基础》多媒体教学光盘的学习进度只记录学生的章节学习情况,即记录学生最后浏览学习的章节名称,如图10所示为学习进度的读取界面。

  1.学习进度的保存

  学习进度的保存设计是在各章节模块流程中进行的。如图3所示即为学习进度保存的操作界面。

  首先,我们必须了解这些学习进度信息到底保存在哪里?其实在Windows系统中,进度信息可以指定保存在文本文件、系统注册表或者系统配置等文件中,且进度信息也有一定的保存格式与意义,例如《电子技术基础》多媒体教学光盘是把记录保存在操作系统目录中,记录文件为INI格式的文本文件,其信息保存格式定义如下:

  记录序列号=章节序号,章节名称,所在模块程序文件名,跳转路径标志,保存日期,保存时间   例如:

  Record1=第四章第1节第(2)小节之:,交流反馈和直流反馈,Part4,2,2003年9月14日,22:32:56

  其中,最关键的参数是跳转路径标志,这里我们取的是该小节内容图标所在框架页面的序列号,通过CurrentPageNum@"framework"系统变量,可以获取当前学生浏览的章节所在框架页面的序列号。当读取记录时,依靠的就是这个参数,直接流程跳转运行指向的具体章节内容的。

  在进行进度文件的保存写操作时,我们使用了budapi.u32的baWriteIni函数按定义格式保存相关进度信息到指定的记录文件中。以下是一段记录保存的参考代码:

icon:="第一章第1节第("^RecordSaveNum^")节:,"^RecordSaveTitle^","^SubStr(FileName,1,CharCount(FileName)-4)^","^RecordSaveNum^","^FullDate^","^FullTime

  baWriteIni("EERecord","Record1",icon,"Userdat.ini")

  2.学习进度的读取

  学习进度的读取设计是在主程序文件的流程中进行的。如图10所示即为学习进度读取的操作界面。在进行学习进度的读取操作时,我们使用budapi.u32的baReadIni函数对记录文件进行读取,并返回读取的对应记录信息。以下是一段记录读取的参考代码:--//读取第一条记录信息Record1 TempRecord:=baReadIni("EERecord","Record1","Error1","Userdat.ini")

--//对读取返回的信息字符串进行处理,获取各项记录参数

  TempRecord:=Replace(",", "\r",TempRecord)

  RecordFileName_1:=GetLine(TempRecord,3)

  Path:=RecordPart_1:=GetLine(TempRecord,4)

--//调用并跳转到记录所指定的具体模块章节内容页面

JumpFileReturn(FileLocation^"Part\\"^RecordFileName_1,"Path")

  七、打包发布光盘程序

  光盘程序经过反复调试正常后,宣告流程设计完毕,进入项目的最后收尾阶段:打包发布。

  我们知道Authorware 7.0提供的“一键发布”功能可以帮助我们快速地打包发行Authorware程序。但是“一键发布”对程序文件中使用的外部扩展函数或插件并不能很智能地完全识别出来,而Authorware的打包文件在执行过程中必须调用一些驱动、插件或函数库文件,例如U32、Xtras、DLL等。因此,此时我们需要手动的拷贝发布相关的支持文件到打包文件的相应目录下保证打包文件的正常运行。程序发布具体操作流程如下:

  1.设置“一键发布”

  单击“File(文件)→Publish(发布)→Publish Settings…(发布设置)”菜单命令,或者按下“Ctrl+F12”组合键在打开的对话框中进行程序发布的相关设置。其中最重要的就是检查程序发布所需要的支持文件,图11所示即为Authorware系统为当前程序文件查找的相关支持文件列表,如果发现程序使用的某些外部支持文件并没有包含在内,可以通过单击“Add Files…(添加文件)”按钮进行手动添加。

  2.完成程序的“一键发布”

  单击“File→Publish→Publish”菜单命令,或者按下“F12”键即可进行一键发布工作,程序自动生成可执行文件,并附带发行相关的支持文件。

  为了提高程序的执行速度,有的多媒体光盘还允许用户安装整个或者部分的光盘程序到硬盘上执行,这个安装程序如果用Authorware 7.0来开发就显得“力不从心”了,即使开发出来,功能也是有限的。其实,现在有很多专业的安装程序制作软件,例如Setup Builder、Inno Setup Compiler等,它们简单易用而功能却是相当专业,借助它们我们就可以把光盘上的Authorware程序文件及其相关支持文件安装到用户的硬盘上了。这些安装程序的具体使用方法已经超出本文的编写范围,具体读者可以参考相关的教程资料。

  至此,商业多媒体教学光盘的开发案例剖析宣告结束!在实际的多媒体光盘开发过程中,还需要读者自己深入研究,本文只是起“抛砖引玉”的作用,希望对广大多媒体开发设计者有一定的指导参考意义。
发表于 2008-7-21 04:22:03
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

快速回复 返回顶部 返回列表