Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 4: Программирование на Visual Basic искусственного интеллекта. Валерий Алексеевич Жарков

Чтение книги онлайн.

Читать онлайн книгу Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 4: Программирование на Visual Basic искусственного интеллекта - Валерий Алексеевич Жарков страница 35

Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 4: Программирование на Visual Basic искусственного интеллекта - Валерий Алексеевич Жарков

Скачать книгу

style="font-size:15px;">      End Sub

      'Объявляем метод-конструктор класса Sound

      'с параметром в виде потока soundStream класса Stream:

      Public Sub New(ByVal soundStream As Stream)

      'Вызываем метод для считывания звукового файла:

      readStream(soundStream)

      End Sub

      'Объявляем метод-конструктор класса Sound

      'с параметром в виде пути filename к звуковому файлу:

      Public Sub New(ByVal filename As String)

      Dim execAssem As System.Reflection.Assembly = _

      System.Reflection.Assembly.GetExecutingAssembly()

      Dim soundStream As Stream = _

      execAssem.GetManifestResourceStream(filename)

      If (soundStream Is Nothing) Then

      System.Windows.Forms.MessageBox.Show( _

      "Missing file : " + filename, "Audio Load")

      Return

      End If

      readStream(soundStream)

      End Sub

      Метод readStream выполняет фактическую загрузку звука. Операционная система управляет звуком. Класс Sound использует платформу Platform Invoke (P/Invoke), чтобы при помощи этого метода вызвать и управлять звуком, как показано в следующем коде:

      Public Enum Flags

      SND_ALIAS = &H10000

      SND_ALIAS_ID = &H110000

      SND_FILENAME = &H20000

      SND_RESOURCE = &H40004

      SND_SYNC = &H0

      SND_ASYNC = &H1

      SND_NODEFAULT = &H2

      SND_MEMORY = &H4

      SND_LOOP = &H8

      SND_NOSTOP = &H10

      SND_NOWAIT = &H2000

      SND_VALIDFLAGS = &H17201F

      SND_RESERVED = &HFF000000

      SND_TYPE_MASK = &H170007

      End Enum

      Private Declare Function PlaySound _

      Lib "winmm.dll" Alias "PlaySound" (ByVal szSound() As Byte, _

      ByVal hModule As IntPtr, ByVal dwFlags As Integer) As Integer

      В этом коде ряд флажков (Flags) непосредственно управляет генерацией звука. Класс Sound содержит статический член, который в настоящее время имеет ссылку на непрерывный циклический звук (или любой другой). Если звук был выключен и затем снова включён, циклический звук возобновляется. Класс Sound содержит методы Play и PlayLoop для одиночного и циклического воспроизведения звукового файла, как показано в следующем коде:

      'Метод для разового воспроизведения звукового файла:

      Public Sub Play()

      loopSound = Nothing

      If (Sound.Enabled) Then

      PlaySound(soundBytes, IntPtr.Zero, _

      Fix(Flags.SND_ASYNC Or _

      Flags.SND_MEMORY))

      End If

      End Sub

      'Метод для циклического воспроизведения звукового файла:

      Public Sub PlayLoop()

      loopSound = soundBytes

      If (Sound.Enabled) Then

      PlaySound(soundBytes, IntPtr.Zero, _

      Fix(Flags.SND_ASYNC Or _

      Flags.SND_MEMORY Or _

      Flags.SND_LOOP))

      End If

      End Sub

      Метод StopSound в классе Sound останавливает проигрывающийся звук, задавая массиву soundBytes нулевое значение (Zero) следующим образом:

      Public Sub StopSound()

      If (Not loopSound Is Nothing) Then

      PlaySound(Nothing, IntPtr.Zero, _

      0)

      End If

      End Sub

      Метод ResumeSound возобновляет звук только тогда, если до этого воспроизводился циклический звук, как показано в следующем коде:

      Public Sub ResumeSound()

      If (Not Sound.Enabled) Then

      Return

      End If

      If (Not loopSound Is Nothing) Then

      PlaySound( _

      loopSound,

Скачать книгу