Authorware使用案例:DirectMediaXtra制作内部媒体播放器

       此文为我2005年读计算机本科时收藏,好东西不敢私藏,大家共享:

--==使用DirectMediaXtra制作内部媒体播放器==--

来源:网络

  一、概述
  使用Authorware播放声音或视频时,经常要用DirectMediaXtra插件,它是个优秀的媒体播放插件。DirectMediaXtra提供了很多控制函数,可以方便地控制声音、视频文件的播放。其默认的播放界面比较简单,只提供了一个“播放/暂停”按钮与一个进度条。(图一)

  本教程教大家使用DirectMediaXtra来制作一个Authorware程序的内部播放器。该播放器可以供程序内任何需要播放声音或视频的地方调用,故我称之为“内部播放器”。-----------------------------
  

      写本教程的目的主要有以下几个方面:

  目标1:介绍如何通过代码来控制DirectMediaXtra播放某个具体文件(注意:不是通过DMX的选项设置框来选择播放文件)。

  目标2:介绍视频文件的停止、暂停、播放、快进与快退功能是如何通过函数实现的。

  目标3:播放进度条的实现方法。

========================
  适用对象:

  本教程是供初学者参考的,尤其对那些一听到函数、变量、代码等词就色变的Authorware初学者将是极其有效的。 
-----------------------------------
  为便于描述,我以播放视频文件为例,实际上播放声音文件也一样。

  本教程着重介绍实现的方法,故程序的界面比较简单,具体应用时,可以做的更美观一些。

  二、构造播放器的程序结构

  程序结构(见图二):

  程序结构说明:

  1、首先拖一个框架图标到流程线上。
  2、双击框架图标,然后删除所有的交互按钮,仅保留交互图标。
  3、在交互图标前加一个“界面底图”显示图标,准备放播放器的界面底图。
  4、在交互图标的右边分别拖4个计算图标,并选择“按钮”交互方式,计算图标内容先保持为空,待以后再写入控制播放的代码。
  5、4个按钮分别命名为“播放/暂停”、停止、快进、快退。
  6、在框架图标的右侧插入一个空白的DirectMediaXtra图标,在对话框中,去掉“启动时显示查找定位对话框”的选项。然后单击确定。不要选择任何播放文件,因为以后我们会用代码来控制这个DirectMediaXtra图标的播放内容。(见图三)

 

  7、为方便起见,将DirectMediaXtra图标的名字改为“dmx”(见图二所示)。
-----------------------------------------
  8、“界面底图”显示图标内放置播放器的界面底图,你可以根据需要自己进行设计。为讲解方便,我直接用Authorware的矩形工具画了三个矩形来作为播放器的界面,很朴素也很丑陋,不过本教程是教你如何设计程序,美工不在考虑范围内。(见图四)。

  9、界面说明:图中最上面的大矩形将作为视频文件的播放区域,中间的蓝色矩形将作为进度条的显示区域。最下面灰色矩形区域将作为控制按钮的摆放区域。

  10、在Authorware中运行程序,按CTRL+P暂停,然后调整各按钮的位置,如图五所示。

  做了这么多基础工作,我们现在需要保存一下文件。

  在Authorware中保存一下文件,保存到一个单独的目录中,文件名任意。
我取的文件名是MediaPlayer.a7p。
-------------------------------------------------------------------
  三、通过代码来让DirectMediaXtra播放指定的视频文件[教程目标1]

  下面我们先来测试一下,DMX图标能否正常工作。

  主要目的是教大家如何用代码来控制DMX播放指定的视频文件。
-----------------------------------
  在程序的流程线最开始处拖一计算图标,并命名为“测试”,双击打开这个计算图标准备输入代码。(见图六)

  之前,你得先准备几个要播放的视频文件,并放到程序的目录中,如果没准备的话,那现在准备吧:
  1、在程序所在的目录内建一个子目录,目录名可以任取,我取的名字是Movie。(见图7)

  2、在其下放置几个视频文件,我放了3个不同的要播放的文件。(见图8)

  现在我们继续前面的工作,在“测试”计算图标内输入以下代码:

SetIconProperty(@"dmx",#file,FileLocation^"movie\\M3.MPG")

  输入完上面的代码后,请关闭计算图标。先不要理会上面的代码是什么意思,我后面会解释的,你要做的就是要保证输入正确。
----------------
  在Authorware中运行程序。。。。

  运行程序后,有没有播放M3.mpg这个视频文件?

  没有任何动静?

  真的没有播放吗?

  检查一下输入的代码有没有错误?要不复制一下我上面写的代码,再试着运行一下程序?

  怎么,还没有播放?

  嗯,那确实是有点问题了。让我们来检查一下!

  打开DMX的选项设置对话框见下图(图十):

  看看“数字视频文件”的文本框中是否显示了正确的路径,应该是显示了吧?检查一下,路径和文件名是否正确。

  如果检查认为正确的话,那么试着点一下“播放按钮”,看看能否播放。如可以播放,那就对了,否则请检查上面的输入代码,直到在这个对话框内正常播放为止(左上角的预览窗口内应能看到播放内容)。见图十一。

  经过上面的检查后,请点击“确定”,退出DMX的选项设置对话框。
------------------------------------------------

  再次在Authorware中运行程序,看看这次有没有播放。

  不错,现在视频文件M3.mpg可以播放了,但屏幕上显示的位置并不正确(见图十二)。



  这没有关系,让我们来调整一下!

  调整视频播放的位置:
  1)按CTRL+P,暂停程序的执行。
  2)点击视频,选中它,进行移动和调整大小,你可以通过拖动视频的角点来进行调整。调整的差不多了,再按CTRL+P运行程序,位置还是不大正确,那再按CTRL+P,暂停程序,继续调整,直至满意为止。

  视频的位置与大小调整,似乎不那么容易,DMX也太“不听话”了,没办法,这是需要一点耐心与技巧的:先调整大小,差不多了再移动到指定的位置。

  下图是我调整好视频位置后的样子:(图十三)

  调整完后,再重新运行一次程序,请保证程序运行正确,视频窗口在正确的位置播放。

  嗯,我们的测试工作就做完了,但我们还不能控制视频的播放与暂停或停止、快进等。

  下面准备编写各控制按钮的代码了。有人一听要写代码就害怕了,其实真的好简单的。
       
  差点忘记了,要解释一下前面那句代码的含义!

SetIconProperty(@"dmx",#file,FileLocation^"movie\\M3.mpg")
是什么意思呢?


  相信通过前面的操作,你已知道它的功能了,那就是用代码来播放movie子目录中的M3.mpg文件。

  注意,上面的测试中,dmx图标要播放文件并没有直接通过DMX的设置对话框来选择的,那DMX图标是怎么知道要播放的文件在什么地方呢?

  显然就是通过上面这句语句了。实际上在程序运行到DMX图标前,告诉它播放文件的位置就可以了。

  这也是这个内部播放器只要设置一个DMX图标的原因,无论有多少个视频文件要播放,仅需要1个DMX图标。

具体解释:
SetIconProperty()函数是设置图属性的函数。

SetIconProperty(@"dmx",#file,FileLocation^"movie\\M3.mpg")

就表示要设置图标"dmx"的file属性,设置好file属性的话,DMX就知道播放哪个具体文件了。

注意:图标名”dmx“要跟在字符"@"后面,"file"前面要有字符"#",表示图标的file属性。

FileLocation^"movie\\M3.mpg"的意思很明确,就是文件的路径与名称:

--FileLocation是Aithorware的系统变量,它保存的是你的程序的路径,
是只读变量,只要你程序运行,它就会自动存储你的文件路径。

"^"是字符串连接符。

FileLocation^"movie\\M3.mpg"就是你要播放的文件位置和名字了。这下明白了吧。

至此,教程的目标1就完成了,感觉怎么样?

相当简单吧,让我们继续下面的目标。你准备好了吗?
四、通过代码来控制DirectMediaXtra对视频文件的播放,
以实现播放器的停止、暂停、播放、快进与快退功能][教程目标2]

1)停止功能的实现:

停止功能的意思是使得正在播放的视频文件,停下来,并且下次播放时,从头开始播放。
这一点是与“暂停”功能不同的,请大家注意观察一下WINDOWS自带的播放器,
来感觉一下“停止”与“暂停”的区别。(暂停功能的意思是使得正在播放的视频文件,
停下来,并且再次播放时,是从停下来的地方继续播放。)

停止:要实现2个目标,即“停播”与“归零”。

函数语句:
CallSprite(@"DMX", #videoseek, time)
就可以实现我们所要的停止功能。
它的意思是让DMX调用#videoseek方法,来搜索到某一时间点time,并且自动暂停视频文件的播放。

要实现停止功能,只需videoseek到时间0的位置就行了。

操作步骤:双击“停止”按钮的下挂计算图标,并在其中输入下面的语句即可:
CallSprite(@"DMX", #videoseek, 0)
见图十四:

  关闭计算图标,在Authorware中运行程序,动画开始自动播放,这时点击”停止“按钮测试一下停止功能。嗯,动画文件果然停止了,并且是停在了动画的开始位置。OK,停止功能实现了。 就这么简单!

------------------------------------------------------------------------------------------------------------
  [注意:]以下的教程是供大家认识DMX函数和提高应用DMX函数的水平例子,不是做”停止“功能必需的知识,入门者或不感兴趣的人可以跳过不学。

  我们再来给停止按钮增加一个”功能“:

  其实我认为停止按钮不应该总是可用的,如果动画文件本身就是停止的,应禁用”停止“功能,动画都已停止了,再按“停止”有什么意义?让我们来禁止它!

  (实际上即使不禁用“停止”按钮,也没什么关系,只是用户点击它时,不会有任何的反应。用户点击它根本毫无意义。呵呵,话说回来,也没什么坏处。 )

  如何判断动画是停止的呢?还记得前面我解释释的”停止“的含义吗?
  停止意味着,动画处于未播放状态,并且播放位置在起始处。

  播放状态这样来取得:

resultA=GetSpriteProperty(@"DMX",#mediabusy)
上面这条语句”=“是赋值的意思,”=“左边的resultA是个自定义的变量
(你可以随便取一个你喜欢的名字),右边是个函数,该函数的意思就是获取DMX是否正在播放动画。
如果DMX正在播放动画的话,它会返回TRUE,此时resultA的值就是TRUE,
如果DMX没有播放动画,即动画正处于暂停状态(或者停止状态)时,该函数会返回FALSE,
此时resultA的值就是FALSE。我们根据resultA的值就可以确定DMX的播放状态。

当前的播放位置这样取得:
resultB=GetSpriteProperty(@"DMX",#currenttime)
同样,resultB是个自定义变量,"="右边的函数就是取得DMX当前播放时间(或者说播放位置)的函数,它的返回值就是当前正在播放的时间位置(它是以毫秒为单位的,使用时要除以1000,才是秒!要注意啊!),该返回值将赋给变量resultB,由变量resulB的值就可以确定出当前正在播放的时间位置。

因此,当DMX处于停止状态时,resultA=FALSE并且resultB=0。
因此,当DMX处于播放状态时,resultA=True(resultB可以为0与动画长度间的任何值)。

双击”停止“按钮下挂的计算图标,在已有的代码下面增加以下代码:
resultA=GetSpriteProperty(@"DMX",#mediabusy)
resultB=GetSpriteProperty(@"DMX",#currenttime)

  图十五:

  然后关闭该计算按钮,此时会分别弹出"自定义变量"对话框,按下图分别给出初始值。
  图十六:

 

  resultA的初始值给的是TRUE,resultB的初始值给的是0.这是因为开始时动画是从0位置播放的。给的初始值正好是这种状态。

  双击“停止”按钮,打开它的属性设置对话框,点击对话框中的“响应”标签,找到“激活条件”文本框,在其中输入以下代码:

resultA|resultB<>0
这一行代码的意思就是如果动画在播放或者暂停在非起始位置就让“停止“按钮可用。
如果不满足上面的条件,就表示DMX是处于停止状态,这时禁用“停止”按钮。
见下图(图十七:):

  在Authorware中运行程序进行测试:
  一开始“停止”按钮是可用的,这是因为resultA和resultB取的是初始值,这时表示动画是处于非停止状态的!
  见下图(图十八):

  点一下“停止”按钮,这时动画停止不播放了,同时“停止”按钮也不可用了(灰色)。
  见下图(图十九):

   OK~,这个提高教程就写完了。从这里我们学会了以下几点:
  1)如何确定DMX是否正在播放文件。
  2)如何取得DMX的播放(时间)位置。
  3)如何根据条件,使用自定义的变量来设置按钮的禁用或者可用(激活)。

-------------------------------------
  再次申明,这是个提高教程,是为了让大家学会一些DMX的函数、应用技巧和方法。目的是为了开拓大家的思路,切勿不理解就照抄代码。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值