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

Authorware开发实例:突破Authorware课件绘制里面midI难关

2024-09-08 19:26:01
字体:
来源:转载
供稿:网友
关于如何在课件中任意控制midi问题,似乎已经成了制约使用midi的一大难题,至今也鲜有关于authorware课件制作方面的资料有过令人满意的解决办法。所以,经常有教师就midi的控制问题来信询问。midi文件因其文件尺寸短小而深受老师们喜爱,在authorware课件制作中经常利用它来做背景音乐,但midi是不可以直接导入程序中的,也就是不可以用图标控制的方式直接播放,所以要用一个ucd/u32程序模块文件来调用midi的播放,是通过调用a5wmme.u32或a4wmme.u32中的函数来实现的,但问题是利用这个函数无法直接实现midi的循环播放。为了解决这个问题,有些authorware高手独立开发了使midi文件循环播放的ucd/32文件。这个文件的名字叫做midiloop, 这个ucd/32文件中只包括两个函数:loopmidi和stopmidi。有了这个两个函数虽然能实现了循环播放,和停止,但却不能实现暂停和继续播放的功能,所以还是不能满足有这方面要求的课件需要。

  一位湖北的教师来信提出了这样的一个要求:"在课件中,我想演示一篇课文,同时有一首短小的midi做为背景音乐循环播放,在演示中我有时要暂停音乐进行讲解,讲解过后我要继续播放和演示。请问我该如何实现
对于这个问题,起初我简单地认为,只要同时调用midiloop和a5wmme这两个ucd/32文件,利用midiloop文件中的loopmidi函数来实现循环,再利用a5wmme文件中的midipause来实现暂停就可以了。事实是问题不是这么简单,因为两个文件对midi控制中的变量及句柄不能相互沟通,所以导制两个文件中的函数不能同时控制midi。
经过实践,笔者就以上问题找到了一个比较好用的解决办法。通过利用a5wmme.u32文件中的有关midi控制函数实现的。实际上,解决了以上这位教师的问题,其实也就解决了midi在课件中控制的难题。思路如下:

  1.显示演示文章的同时循环播放midi

  2.在文章旁边有三个按钮控制midi的播放,暂停、继续和停止。(当然你还可根据需要增加或减少按钮)
程序流程图:

  1.创建一个新文件playmidi.a6p,选取菜单栏上的[window]--[functions]命令,屏幕上弹出函数调用对话框。在category中选中文件名playmidi.a6p,单击load按钮。选取a5wmme文件后,调入以下函数:midiplay(播放)、midiplay(暂停)、midiresum(暂停后恢复播放)、midistop(停止播放)、midiplaying(返回当前midi播放的状态)。

  2.拖一个计算图标到展示窗中,命名?quot;初始化变量",双击打开,输入变量x:=1。这是为了能让程序自动检测midi播放完毕后继续播放的约定条件。
 3.拖一个交互图标,命名为"midi控制"在弹出的[response type]响应类型对话框中选取[button],双击交互图标打开,引入要演示的课文。

  4.在交互图标后,放入三个计算图标,依次命名为"暂停"、"继续"、"停止"。

  双击"暂停"计算图标,输入:

  midipause()
  x:=0

  双击"继续"计算图标,输入:

  midiresume()
  x:=1

  双击"停止"计算图标,输入:

  midistop()
  quit()

  5.再拖一个计算图标放在"停止"图标后面,双击新图标上方的响应类型符号,一个小长方形标记,在弹出的对话框中的[type]选取[conditional],按下图输入所示。

  完毕后按ok按钮,双击该计算图标,输入:

  midiplay("d://tools//gsls.mid", 100, false)

  到这里,一切ok,运行程序。 在显示课文的同时,在屏幕上出现了三个按按钮,可任意暂停、继续和停止midi的播放。不但实现了midi的循环播放,而且还实现了对其任意控制的目的,就象对wav控制一样,如果你想加入其它功能,例如播放midi中的某一段,只需加入相应的计算图标和控制函数midiplaysegment即可。

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