« Wサウンド再生ソフトをつくる スコープ | トップページ | Wサウンド再生ソフトをつくる 完成 »

2011年9月23日 (金)

Wサウンド再生ソフトをつくる イベントハンドラ

 このソフトは、実は落語を二つ聞き比べて、違いを見つけるために作っています。いつも参考にしている落語はろーのページにもいくつかバージョン違いについてのっています。近年かつて削除された部分が復活することが重なりその発見が喜びになっているのです。

 さて、ObjectにAudioVideoPlayback.Audioを代入して、再生・停止・終了・音量調節・左右バランス調節ができるようになりました。そこでの問題は、サウンドの再生が末尾まで達すると、そこで一時停止したままだということです。
 終わりに達したら再生のポイントは先頭に戻ってほしいところです。終了ボタンを押せば先頭に戻りますが、自動でやってほしい。末尾で停止したままでも、次に再生ボタンを押したら「末尾判定>先頭に戻す>再生」をすれば回避できないことはありません。でもソフトの勉強を兼ねて、初めてイベントをハンドラに結び付けてみました。

 イベントが起きたときの処理をするプロシージャを

  sub Audio_Ending()

    MyAudio.Stop() '先頭に戻す処理

  end sub

 と定義して AudioVideoPlayback.Audio の Ending イベントを結びつけます

 これで自動的に先頭に戻ります。

 しかし、サンプル通りのプロシージャ内で宣言した MyAudio には、結び付けられるのですが、Object に代入した MyAudio だと「エラー」。
 ふりだしに戻りました。やはりモジュールレベルで AudioVideoPlayback.Audio を宣言するしかありませんが、そのやり方が全く見つかりません。いよいよ質問サイトのお世話に… なるまえに、行き当たりばったりでためしてみたらビンゴ! (ファイル名)抜きで宣言できたのです。つまり

Public Class Form1
  Dim MyAudio As Microsoft.DirectX.AudioVideoPlayback.Audio

  Private Sub FileOpenButton_Click( ByVal sender ......

     ファイル名取得

     MyAudio = New Microsoft.DirectX.AudioVideoPlayback.Audio(ファイル名)

     AddHandler.MyAudio.Ending, Adress of Audio_Ending
  
  End Sub

こんな感じで、あとは細かい動作を書き込んでいけば完成は遠くありません。運(ささやかですが)がよかったとしかいいようがありません。

|

« Wサウンド再生ソフトをつくる スコープ | トップページ | Wサウンド再生ソフトをつくる 完成 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Wサウンド再生ソフトをつくる イベントハンドラ:

« Wサウンド再生ソフトをつくる スコープ | トップページ | Wサウンド再生ソフトをつくる 完成 »