dmx的节点控制,你可以参考DMX的文档:
DirectMedia Xtra用户指南
本文由:JamesYuZhao提供
介绍
DirectMedia Xtra是一种Sprite Xtra。Sprite Xtra可以用计算图标进行控制,而且属性也可以通过脚本指定,就像Authorware中的内置媒体文件一样。
如果回放的系统允许,DirectMedia Xtra还支持Microsoft's DirectDraw and DirectSound。它总能够根据机器的不同选择最佳的播放效果,即使显示设置为256色,也能使用高彩色来播放媒体文件。DirectDraw引擎利用直接写显存的技术增强回放效果。
要建立一个图标,打开INSERT菜单,选择TABULEIRO XTRAS -> DirectMedia Xtra,这时会显示一个DirectMedia Xtra属性对话框,单击browse file,打开另一个对话框,提示你选择一个媒体文件。它所支持的媒体类型有Mpeg, AVI, Quicktime, WAV, AIF, MP2 和MIDI。文件可以在本地机器,也可以在局域网上其他计算机上,甚至可以用输入URL链接一个互联网上的文件。选好文件,点击OK,返回属性对话框,文件的长度(时间),尺寸等信息应能正确的显示出来。
你可以预览文件,标注提示点并设置播放选项(工具条,音量,速率,平衡等等),单击OK完成。在流程线上就出现一个名为DirectMedia Xtra的图标,可以重新调整播放的位置和尺寸。
提示点
每一个DirectMedia Xtra可以有最多64个提示点,以毫秒位单位,每一个提示点的名字最多可以使用32个字符。要建立一个提示点就要在属性对话框中预览文件时确定时间,然后选择"ADD",显示一个窗口定义提示点的名字。如果以后想修改提示点,在列表中双击名字就可以直接编辑了。使用"GOTO"检查提示点的定位,"REMOVE"用来删除一个提示点。
用脚本建立提示点
CallIcon(@"IconName", #addcuepoint, cuepointtime, "cuepointname"
- 这个函数建立一个新的提示点,cuepointtime是时间 cuepointname是名字,自动排列顺序。
Example:
CallIcon(@"DirectMedia Xtra", #addcuepoint, 10000, "newcue"
CallIcon(@"IconName", #removecuepoint, cuepointindex) - 删除一个提示点,需要指定提示点的序号。 Example:
CallIcon(@"DirectMedia Xtra", #removecuepoint, 1)
使用提示点
DirectMedia Xtra 的提示点被用来在回放时几个方面的控制。下面是它的几个属性:
isPastCuePoint(sprite) ---经过的提示点
the mostRecentCuePoint of sprite ---最近的提示点
the cuepointtimes of icon ----指定提示点的时间
the cuepointnames of icon ----指定提示点的名字 当媒体文件播放时,你必须设置一个事件响应以获取提示点,请参考所附带的例子程序。主要步骤是:建立一个"Event"类型的响应,在属性对话框中选择一个"Sender"图标名,再双击"Event Name"框中的"CuePointPassed"事件。这样,每当经过一个新的提示点,就触发这个响应。后面将要介绍的EventLastMatched变量会让你更多地了解这个事件。
Properties 属性
DirectMedia Xtra所有的属性都可以很方便地在属性对话框中进行设置,这个对话框在你创建图标或者双击该图标时出现。同时,也可以通过脚本进行设置。
Icon Properties 图标属性
file ---被使用的媒体文件的全路径名 例如: result:=GetIconProperty(@"DirectMedia Xtra", #file) Trace(result) --"C:\myfile\file.mpg"
SetIconProperty(@"DirectMedia Xtra", #file,"C:\myfile2.mpg"
title ---媒体文件名,不带路径。这个属性用于在原目录找不到文件的时候。 例如: result:=GetIconProperty(@"DirectMedia Xtra", #title) Trace(result) --"file.mpg"
注:基于HTTP的文件链接,DMX不会在启动时自动定位。
showlocatefiledialog --- DirectMedia Xtra在运行时会自动定位媒体文件,如果文件没有找到,使用这个属性可以显示一个指定文件的对话框,否则,就是一片空白。 例如: SetIconProperty(@"DirectMedia Xtra", #showlocatefiledialog,TRUE)
linkedmedialocated --- 这个属性可以自动设置,用来表明媒体文件是否被正确调用。如果属性的值为False,DirectMedia Xtra就不会进行初始化播放。
例如: result:=GetIconProperty(@"DirectMedia Xtra", #linkedmedialocated) Trace(result) --"1" duration --- 媒体文件的持续播放的时间,单位为毫秒。
例如: result:=GetIconProperty(@"DirectMedia Xtra", #duration) Trace(result) -- 45200 videowidth --- 媒体文件的播放宽度,单位为像素。
例如: result:=GetIconProperty(@"DirectMedia Xtra", #videowidth) Trace(result) -- 352 videoheight ---媒体文件的播放高度,单位为像素
例如: result:=GetIconProperty(@"DirectMedia Xtra", #videoheight) Trace(result) -- 240 volume --- 回放音频的音量。值的范围从-100到0(dB即分贝)
例如: result:=GetIconProperty(@"DirectMedia Xtra", #volume) Trace(result) -- -10 SetIconProperty(@"DirectMedia Xtra", #volume,0) balance --- 音频回放平衡,值的范围从-100到100(dB即分贝)
例如: result:=GetIconProperty(@"DirectMedia Xtra", #balance) Trace(result) -- -100 SetIconProperty(@"DirectMedia Xtra", #balance,0) rate --- 回放速率。值的范围从0到200,是原来标准播放速度的百分比例。
例如: result:=GetIconProperty(@"DirectMedia Xtra", #rate) Trace(result) -- 100 SetIconProperty(@"DirectMedia Xtra", #rate,80) cpuboost --- 由于DirectShow?技术要占用比较多的CPU时间,因此DirectMedia Xtra?会使Authorware?的运行变慢。如果你遇到回放缓慢或者断续的情况,可以使用这个属性设置。合法的取值范围是0到95(百分比),一般来说,超过60就可以解决问题了。
例如: SetIconProperty(@"DirectMedia Xtra", #cpuboost,60) adjustdurationbeforeplayback --- 如果这项属性的值为真,DirectMedia Xtra?就会在开始播放的同时确定媒体文件的可持续播放时间。这是十分必要的,因为对于同一个文件,不同的DirectShow过滤器会报告不同的可持续播放时间。这样一来,当你把一个成品放到另一台机器运行的时候,DirectMedia Xtra就有可能无法达到指定的提示点,或者它会认为文件还没有播放完。使用这个属性可以保证正常播放,因此你应该在大多数情况下都使用。
例如: SetIconProperty(@"DirectMedia Xtra", #adjustdurationbeforeplayback,1) hastoolbar --- 指出是否在播放窗口附带一个工具条。值为0(假)或1(真)。
例如: SetIconProperty(@"DirectMedia Xtra", #hastoolbar,1) loop --- 指出是否自动循环播放文件。值为0(假)或1(真)。
例如: SetIconProperty(@"DirectMedia Xtra", #loop,1) playsegment --- 指出是否只播放文件的一个片断。值为0(假)或1(真)。
例如: SetIconProperty(@"DirectMedia Xtra", #playsegment,1) segmentstart --- 指定文件播放的起始时间,单位是毫秒。只在playsegment的值为真时有效。
例如: SetIconProperty(@"DirectMedia Xtra", #segmentstart,10700) segmentend ---指定文件播放的结束时间,单位是毫秒。只在playsegment的值为真时有效。
例如: SetIconProperty(@"DirectMedia Xtra", #segmentend,45800) pausedatstart --- 指出是否在打开文件的时候暂停,不播放。值为0(假)或1(真)。
例如: SetIconProperty(@"DirectMedia Xtra", #pausedatstart,1) cuepointtimes --- 与该图标有关的提示点时间的列表。
例如: result:=GetIconProperty(@"DirectMedia Xtra", #cuepointtimes) Trace(result) -- [4500,12300,34650,67321] cuepointnames ---与该图标有关的提示点名字的列表
例如: result:=GetIconProperty(@"DirectMedia Xtra", #cuepointnames) Trace(result) -- ["Cue 1","NewCuePoint","Start Point","Second part"] Sprite 属性 currenttime --- 媒体文件当前播放位置,单位是毫秒。
例如: result:=GetSpriteProperty(@"DirectMedia Xtra", #currenttime) Trace(result) -- 22345 mediabusy --- 表明媒体文件是否正在播放。值为0(假)或1(真)。
例如: result:=GetSpriteProperty(@"DirectMedia Xtra", #mediabusy) Trace(result) -- 1 mostrecentcuepoint --- 最后经过的提示点的序号。
例如: result:=GetSpriteProperty(@"DirectMedia Xtra", #mostrecentcuepoint) Trace(result) -- 2 Functions --- 函数 DirectMedia Xtra提供了几种函数功能,可以用脚本的方式使用来控制媒体文件的回放。 Icon Functions --- 图标函数 CallIcon(@"IconName", #isDirectShowInstalled) --- 返回0(假)或1(真)。用来判断用户机上是否安装了DirectShow。在正式版中有效。
例如: result:=CallIcon(@"DirectMedia Xtra", #isDirectShowInstalled) Trace(result) -- 1 CallIcon(@"IconName", #addcuepoint, cuepointtime, "cuepointname"
--- 这个函数可以通过脚本语言建立一个新的提示点,提示点会自动排列顺序。
例如: CallIcon(@"DirectMedia Xtra", #addcuepoint, 10000, "newcue"
CallIcon(@"IconName", #removecuepoint, cuepointindex) --- 这个函数可以把你指定序号的提示点删除。
例如: CallIcon(@"DirectMedia Xtra", #removecuepoint, 1) CallIcon(@"IconName", #scanfile) --- 当通过脚本语言改变要播放的媒体文件时,这个函数可以确定文件长度和可持续播放时间。它将自动查询文件并改变自身属性。Adjustdurationbeforeplayback也可以用来校对播放时间,我们建议使用这个属性来代替scanfile(),因为它更准确。
例如: CallIcon(@"DirectMedia Xtra", #scanfile) CallIcon(@"IconName", #register, registration number) --- 在运行时对DirectMedia Xtra?进行注册。这个函数不常用。
例如: CallIcon(@"DirectMedia Xtra", #register,"SERIALNUMBERHERE"
Sprite 函数 CallSprite(@"IconName", #videoplay) --- 用于开始或是恢复播放媒体文件。通常在调用时会自动播放文件,除非选择了"Paused at Start"(在开始时暂停)
例如: CallSprite(@"DirectMedia Xtra ", #videoplay) CallSprite(@"IconName", #videopause) --- 暂停播放。
例如: CallSprite(@"DirectMedia Xtra ", #videopause) CallSprite(@"IconName", #videoseek , time) --- 查找并暂停在指定的时间位置。时间单位是毫秒。
例如: CallSprite(@"DirectMedia Xtra ", #videoseek, 15000) CallSprite(@"IconName", #videoplaysegment , starttime, endtime) --- 播放文件的一个片断。请注意这个选项实际上限制了对片断以外其他部分的控制,因此应该再用另一个videoplaysegment()定位到其他的时间点上,跳出这个片断。
例如: CallSprite(@"DirectMedia Xtra ", #videoplaysegment, 10000, 20000) -- the following command pauses the video in time location 30000 CallSprite(@"DirectMedia Xtra ", #videoplaysegment , 30000, 30000) CallSprite(@"IconName", #isPastCuePoint , cuepointindex) --- 判断指定序号的提示点是否已经经过了。返回值为0(假)或1(真)。
例如: result:=CallSprite(@"DirectMedia Xtra ", #isPastCuePoint, 2) Trace(result) --- 1 CallSprite(@"IconName", #setvolume, volume) --- 设置音频回放的音量。赋值范围从-100到0(dB /分贝)。
例如: CallSprite(@"DirectMedia Xtra ", #setvolume , 0) CallSprite(@"IconName", #getvolume) --- 返回当前音频播放的音量值,单位是dB /分贝。
例如: result:=CallSprite(@"DirectMedia Xtra ", #getvolume) Trace(result) -- -20 CallSprite(@"IconName", #setbalance, balance) --- 设置音频回放的平衡。赋值范围从-100到100(dB /分贝)。
例如: CallSprite(@"DirectMedia Xtra ", #setvolume , 0) CallSprite(@"IconName", #getbalance) ---返回当前音频播放的平衡值,单位是dB /分贝。
例如: result:=CallSprite(@"DirectMedia Xtra ", #getbalance) Trace(result) -- -100 CallSprite(@"IconName", #setrate , rate) ---设置播放速率。赋值范围从0到200(%)
例如: CallSprite(@"DirectMedia Xtra ", #setrate , 80) CallSprite(@"IconName", #getrate) --- 返回当前播放速率,百分比值。
例如: result:=CallSprite(@"DirectMedia Xtra ", #getrate) Trace(result) -- 100 CallSprite(@"IconName", #setfulscreen) --- 这个函数利用ActiveMovie/DirectShow实现全屏播放。它的全屏播放方式是完全独立的,无论你的程序是否工作在全屏状态下。在此期间不响应鼠标和键盘事件,因此要利用提示点来返回程序,而且在结束时要使用一次RemoveFullScreen()函数。
例如: CallSprite(@"DirectMedia Xtra ", #setfullscreen) CallSprite(@"IconName", #removefulscreen) --- 停止ActiveMovie/DirectShow的全屏播放。返回到Authorware的展示窗口。
例如: CallSprite(@"DirectMedia Xtra ", #removefullscreen 1) Creating Executables --- 建立可执行文件 DirectMedia Xtra只能运行在Windows95, 98 and Windows NT 环境。因此,你应该建立Windows? 95 and Windows NT的可执行文件。而且还要把DirectMediaXtra.x32文件放到XTRAS文件夹中,和你的可执行文件放在同一个目录下。 最终的文件结构应该像下面这样: 可执行文件 --- C:\myproj\proj.exe Xtra 文件 --- C:\myproj\Xtras\DirectMediaXtra.x32
DirectMedia Xtra会自动定位所有在同一目录下的相关媒体文件,或者在searchpath变量中指定的目录中的。但不会从HTTP服务器上查找媒体文件。