0

新しいウィンドウを作成するときに処理するサブがあります。Irrklangライブラリを使用してmp3ファイルをロードして再生します。しかし、プレイポジションを更新する方法。タイマーは使えると聞きましたが、潜水艦内で使うには?

Private Sub  MainWindow_Loaded(sender As Object, e As RoutedEventArgs)

    Dim Music = MyiSoundengine.Play2D("Music/001.mp3")

    I Want to update this in every sec!
    Dim Music_Playposition = Music.Playpostion

    End Sub
4

1 に答える 1

0

メソッド/サブ内でタイマーを使用することはできません。タイマーが機能する唯一の方法は、定期的にイベントを発生させることです。タイマーの場合、これは「ティック」イベントと呼ばれ、タイマーが「ティック」するたびに発生します。

おそらく、イベントが何であるかをすでに知っているでしょう。MainWindow_Loadedメソッドは、クラスのLoadedイベントを処理しています。MainWindow

したがって、必要なのは、アプリケーションにタイマーを追加し、そのTickイベントを処理し、そのイベントハンドラー内で、テキストボックスを現在の位置で更新することです。

例えば:

Public Class MainWindow

    Private WithEvents timer As New System.Windows.Threading.DispatcherTimer()

    Public Sub New()
        ' Initialize the timer.
        timer.Interval = new TimeSpan(0, 0, 1);  ' "tick" every 1 second

        ' other code that goes in the constructor
        ' ...
    End Sub

    Private Sub timer_Tick(sender As Object, e As EventArgs) Handles timer.Tick
        ' TODO: Add code to update textbox with current position
    End Sub

    Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs)
        ' Start the timer first.
        timer.Start()

        ' Then start playing your music.
        MyiSoundengine.Play2D("Music/001.mp3")
    End Sub

    ' any other code that you need inside of your MainWindow class
    ' ...

End Class

WithEventsタイマーオブジェクトのクラスレベルの宣言でのキーワードの使用に注意してください。これによりHandles、イベントハンドラーのステートメントのみを使用してイベントを簡単に処理できます。それ以外の場合AddHandlerは、コンストラクターの内部を使用して、イベントハンドラーメソッドを目的のイベントに接続する必要があります。

于 2013-03-15T11:25:34.693 に答える