突破Authorware课件制作中MIDI难关

来源:不详 责任编辑:栏目编辑 发表时间:2013-07-01 10:20 点击:

    关于如何在课件中任意控制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即可。

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    媒体动画导航

    Authorware
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1