在PB中播放动画和语音(深圳:独孤求败 2003-05-27) PowerBuilder是一套强大的数据库应用系统开发工具。如果能在应用系统的开头播放一小段动画和语音,无疑会使系统赏心悦目、更具风采。 3DS是基于PC的三维动画制作软件,用户可以直接使用其丰富的材质库及模型文件,能够在较短的时间内制作出优秀的动画效果。采用3DS制作动画封面并渲染成START.FLC文件。下面主要介绍在PowerBuilder中,通过调用动态链接库(DLL),来播放动画和语音。 Windows的媒体播放器中缺省设置只能够播放扩展名为avi的动画文件,要播放flc文件,需要在Windows中装入相应的MCI(媒体控制接口)驱动程序。可在Windows中装入一个小巧的动画播放软件Aaplayw,在安装提示中,注意选择“安装MCI驱动程序”一项,则该驱动程序便自动安装。我们同样也可以采用手动安装的方法,首先拷贝播放动画所需的两个动态库和一个驱动程序:aaplay.dll、aav ga.dll、mciaap.drv到windowsιsystem目录下, 然后按下面所示修改三个参数配置文件。
win.ini文件应有以下内容:
[mciextensions]
flcΚanimation1
fliΚanimation1
aasΚanima tion1
[IAAnimationEditor]
PlayDisplay ZoomedΚ1
CleaDisplayΚ1
HideScriptΚ1
PlayBarIn ScriptΚ1
PlayLoopΚ0
PlayDisplayEr rorsΚ1
ClearImageAt EndΚ0
ClearDisplayAtEndΚ0
DisplayVisibleΚ1
ImagevisibleΚ1
ToolBoxVisibleΚ1
MouseVisibleΚ1
DisplayZoomedΚ1
AutoHideScriptΚ1
IconCommentsΚ1
IconDataΚ1
[AAPLAYAnimation]
DualScreenΚ0
FullScreenΚAAVGA.DLL
FullInstalledΚ1
system.ini文件应有以下内容:
[mci]
Animation1Κmciaap.drv
control.ini文件应有以下内容:
[drivers.desc]
mciaap.drvΚ[MCI]AutodeskAnimation1.10
安装完毕后再打开媒体播放器,用鼠标选择“设备”菜单项,这时会发现比原来多了一项设备名(AutodeskAnima torAnimation),选择此设备,在打开文件菜单中选择文件时的扩展名列表框中有“ .flc文件”类型。先试着播放一下START.FLC,如果不能播放该动画文件,则可能是设备驱动程序没有安装好,需按上述步骤进行检查。
2.MCI指令
MCI指令是Windows多媒体环境中非常重要的部分,Windows通过媒体控制接口MCI来主宰MPC多媒体外部设备。MCI指令的语法格式为:
commanddevice—namearguments
其中:command:指令名。
device—name:多媒体设备类型,也可能是文件名或者别名。
arguments:指令操作参数。
3.支持多媒体的API函数
Windows的动态链接程序库mmsys tem.dll(在WIN32中使用WIN MM.DLL),提供了大概一百多个具有多媒体处理能力的API函数,其中包括与MCI指令沟通的API函数。下面的程序设计中我们主要使用了两个函数:mciSendString()和SndPlaySound()。
4.PowerBuilder调用动态链接库来播放动画和语音
(1)创建窗口win-face,定义外部函数,具体方法如下:选取菜单栏“Declare”的菜单项“GlobalExternalFunctions…”,在定义全局函数窗口中书写下列语句:
FUNCTIONlongmcisendstring(stringcomm,stringretu,integerlength,integerhwnd)LI BRARY″c:ιwindowsιsystemιmmsystem.dll″
FUNCTIONbooleansndPlaySound(stringSoundName,uintFlags)LIBRARY ″c:ιwindowsιsystemιmmsystem.dll″
FUNCTIONuintwaveOutGetNumDevs()LI BRARY″c:ιwindowsιsystemιmmsystem.dll″
注意:如果在Windows95上(win32version),则LIBRARY后应“c:ιwindowsιsystemιwinmm.dll”
(2)在窗口win-face的Open事件中输入程序代码:
timer(0.01)/ 设定启动时间 /
(3)在窗口win-face的Timer事件中输入程序代码 :
timer(0)/ 关闭Timer事件 /
longret
integernu
stringcomm1,comm2,comm3,buff
comm1Κ″openc:ι3dsιimagesιstart.flctypeAnima tion1aliaswelcomestylepopup″
comm2Κ″playwelcomefrom1to40speed16wait″
comm3Κ″closewelcome″
setnull(buff)
setnull(nu)
retΚmcisendstring(comm1,buff,0,nu) / 打开动画播放设备 /
retΚmcisendstring(comm2,buff,0,nu) / 播放封面动画 /
retΚmcisendstring(comm3,buff,0,nu) / 关闭动画播放设备 /
open(w-main)/ 打开应用主窗口 /
close(this)/ 关闭win-face窗口 /
(4)在应用主窗口w—main的Open事件中输入程序代码:
booleana
uintlui—numdevs
stringas—filename
as—filenameΚ″c:ιwindowsιstart.wav″
uintai—option
lui—numdevsΚWaveOutGetNumDevs()
iflui—numdevsΛ0then
aΚsndPlaySound(as—filename,ai—option)
/ 播放话音文件 /
retrun1
else
return-1
endif
(5)在退出应用时播放EXIT.WAV文件所用语句与播放START.WAV文件所用语句类似(上述程序在PowerBuilder5.0中调试通过)。
5.在PowerBuilder中播放.FLC动画文件的其它几种方法
(1)通过类用户对象创建动画封面。
(2)把.FLC文件形成.EXE文件后,用函数RUN(″c:ι3dsιimagesιstart.exe″)来运行。