四、通过代码来控制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的函数、应用技巧和方法。目的是为了开拓大家的思路,切勿不理解就照抄代码。
我想要是初学者能真的明白本提高教程的话,那一定会受益不浅的。
(不是我自卖自夸吧,呵呵)
-----------------------------------
今天就写到这里了,以后再继续。