摘要 利用VB编写多媒体课件,主要解决动画、声音、图片、文本的显示、播放与控制等问题,本文介绍一些有关的编程技巧和关键技术。
关键词 VB 多媒体 课件
Visual Basic采用面对对象的程序设计思想,且继承了Basic简单易学的特点, 功能强大被很多课件的开发者所青睐,它和许多课件开发平台相比,具有更好的灵活性,可以充分的实现开发者的意图,是开发多媒体程序的利器,下面是我用 Visual Basic 编写课件的一点经验。
1.播放FLC动画
FLC动画是表示物理量之间的联接关系及运动关系有利工具,我采用vbplay.vbx控件播放动画。
使用该控件,必须有aaplay.dll文件同时存在。
①播放动画前判断是否有动画文件,有则播放:
if dir("文件名.flc")"" then
animation1.animation="文件名.flc"
animation1.visible=true
endif
②为了看清物理量某一状态,动画需要在某一帧暂停:
Private Sub pausebtn_Click()
If animation1.Pause Then
animation1.Pause = False
Else
animation1.Pause = True
End If
End Sub
③ 动画向前退一帧:
Private Sub back_Click()
animation1.PositionFrame = animation1.PositionFrame - 1
End Sub
2.声音的播放
为了使用者更好的理解并撑握软件所讲知识,增强学习效果,声音解说在多媒体课件中起着十分重要的作用。声音可用windows的录音机录制。是否声音播放可由使用者控制,也可实现声音的暂停。下面是利用MCI控件实现声音的播放。
Public Const mci_mode_close As Integer = 524
Public Const mci_mode_play As Integer = 526
Public Const mci_mode_pause As Integer = 529
Private Sub sound_Click()
‘如果声音正在播放则暂停或继续播放
If (Not MMControl1.Mode = mci_mode_pause) And (MMControl1.Mode = mci_mode_play) Then
MMControl1.Command = "pause"
Else
‘播放解说词
MMControl1.DeviceType = "WaveAudio"
MMControl1.filename = "文件名.wav"
MMControl1.Shareable = False
MMControl1.UpdateInterval = 50
MMControl1.Notify = True
MMControl1.Command = "open"
MMControl1.Command = "prev"
MMControl1.Command = "play"
End If
End Sub
‘========================================================
‘如果解说已播放结束,则关闭媒体播放器
Private Sub MMControl1_Done(NotifyCode As Integer)
If MMControl1.Position = MMControl1.Length Then
MMControl1.Command = "close"
End If
End Sub
3.图形按钮编程实现
虽然VB提供了标准的Windows按钮,但在多媒体课件中使用带指示声音的图形按钮发挥多媒体计算机的优点,使程序界面更美观,操作更方便,大大的提高多媒体课件的教学效果。
①先用photonshop作三个图片,代表按钮的三种状态,并命名为move.bmp,normal..bmp,down.bmp,用 windows下的录音机录制二个声音文件,命名为:mover.wav,down.wav 。
②利用API函数播放声音,函数定义
#If Win32 Then
Declare Function playsound Lib "WinMN" (ByVal SoundName As String, ByVal handle As Integer, ByVal Flags As Long) As Integer
#Else
Declare Function playsound Lib "MMSystem" (ByVal SoundName As String, ByVal handle As Integer, ByVal Flags As Long) As Integer
#End If
Public Const snd_nodefault = &H2
Public Const snd_sync = &O0
Public Const snd_filename = &H20000
③在窗体上画picture控件,picture1.autosize=true,picture1.borderstyle设置为0-none,picture1.picture设置为normal.bmp。
④编程
‘============================================================
‘当光标在窗体中时,按钮处于正常状态
Private Sub Form1_MouseMove()
picture1.picture=loadpicture("normal.bmp")
mark=false
End Sub
‘============================================================
‘当光标在按钮上移动时,按钮处于激活状态,且播放声音 mover.wav
Private Sub Picture1_MouseMove()
if mark then
picture1.picture=loadpicture("move.bmp")
playsound "mover.wav",0,snd_sync or snd_nodefault or snd_filename
mark =true
end if
end sub
‘============================================================
‘当鼠标右键按下时,按钮处于按下状态
Private Sub Picture1_MouseDown()
picture1.picture=loadpicture("down.bmp")
end sub
‘=========================================================
当鼠标右键弹起时,按钮处于激活状态
Private Sub Picture1_MouseUp()
picture1.picture=loadpicture("move.bmp")
end sub
‘==========================================================
‘单击按钮时,播放down.wav
Private Sub Picture1_Click()
playsound "down.wav",0,snd_sync or snd_nodefault or snd_filename
end sub