Kleine Hilfe bei Animationsproblem

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Linkai.

    Kleine Hilfe bei Animationsproblem

    Hallo ihr lieben,
    ich steh grad mal wieder ein wenig auf dem Schlauch.

    Ich versuche eine kleine Textanimation zu Programmieren, doch die Form reagiert nicht richtig. Hier mal der kleine Code:

    VB.NET-Quellcode

    1. Public Class animation
    2. Dim _tl As New List(Of ListViewItem)
    3. Dim _th1 As New Threading.Thread(AddressOf init)
    4. Public elapsedRounds As Integer = 0
    5. Private Sub animation_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    6. Label1.Text = ""
    7. For Each _team In teamsModul.teamList
    8. _tl.Add(_team)
    9. Next
    10. _th1.Start()
    11. End Sub
    12. Sub init()
    13. Dim _random As New Random
    14. Do Until elapsedRounds >= 500
    15. Me.Invoke(Sub() Label1.Text = _tl.Item(_random.Next(0, _tl.Count - 0)).Text)
    16. elapsedRounds += 1
    17. Threading.Thread.Sleep(100)
    18. Loop
    19. Me.Invoke(Sub() Label1.Text = teamsModul.acceptedTeam)
    20. Threading.Thread.Sleep(1500)
    21. Me.Close()
    22. End Sub
    23. End Class

    Es existieren hier nur die Form und das Label, welches eine schnelle Wechselfolge durch die Texte der Teamliste als animation zu Verfügung stellt.
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Nimm nen Timer für sowas. Dein Programm "hängt" so lange, bis die Schleife fertig ist.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Das habe ich davor auch schon versucht, der hat leider auch zu keinem guten Erebnis geführt. Ich versuchs aber gerne noch einmal. Code folgt in wenigen minuten.


    #edit

    VB.NET-Quellcode

    1. Public Class animation
    2. Dim _tl As New List(Of ListViewItem)
    3. Dim WithEvents _timer As Timer
    4. Dim _th1 As New Threading.Thread(AddressOf init)
    5. Public elapsedRounds As Integer = 0
    6. Private Sub animation_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    7. Label1.Text = ""
    8. For Each _team In teamsModul.teamList
    9. _tl.Add(_team)
    10. Next
    11. ' init()
    12. _th1.Start()
    13. End Sub
    14. Sub init()
    15. _timer = New Timer
    16. _timer.Interval = 300
    17. _timer.Start()
    18. End Sub
    19. Private Sub _timer_Tick(sender As Object, e As EventArgs) Handles _timer.Tick
    20. Dim _random As New Random
    21. If elapsedRounds >= 50 Then
    22. Me.Invoke(Sub() Label1.Text = teamsModul.acceptedTeam)
    23. Threading.Thread.Sleep(1500)
    24. Me.Close()
    25. Else
    26. Me.Invoke(Sub() Label1.Text = _tl.Item(_random.Next(0, _tl.Count - 0)).Text)
    27. End If
    28. elapsedRounds += 1
    29. End Sub
    30. Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
    31. End Sub
    32. End Class


    Gleiches Ergebnis
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    @Linkai Lass das Threading, Invoke und Sleep weg. Nen einfacher Timer langt :)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen