我有一个Sub,它在我创建新窗口时处理。它使用irklang库加载和播放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
不能在方法/子中使用计时器。计时器工作的唯一方式是周期性地引发事件;在计时器的情况下,它被称为"Tick"事件,每次计时器"滴答"时引发。
您可能已经知道什么是事件-您的MainWindow_Loaded
方法正在处理一个,MainWindow
类的Loaded
事件。
所以你需要做的是在你的应用程序中添加一个计时器,处理它的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
将事件处理程序方法连接到所需的事件。