Ich mache ein Überleben Spiel und versuche, ein Objekt zu entfernen, wenn es vom Bildschirm verschwindet. Hier ist der Code:Entfernen Sie ein Objekt, wenn in einer für jede Schleife
Public Sub tmrEnemyMove_Tick(sender As Object, e As EventArgs) Handles tmrEnemyMove.Tick
Dim koopaAnimation As Boolean
For Each enemy As enemy In lstEnemy
enemy.enemy.Left = enemy.enemy.Left - 20
If enemy.enemy.Tag = "koopa" Then
enemy.enemy.Image = Image.FromFile(Application.StartupPath + "\Graphics\koopa" + Trim(Str(koopaPosition)) + ".png")
If koopaAnimation = False Then
If koopaPosition = 0 Then
koopaPosition = 1
Else
koopaPosition = 0
End If
End If
koopaAnimation = True
End If
If picMario.Left < enemy.enemy.Left AndAlso enemy.enemy.Left < picMario.Right Or picMario.Left < enemy.enemy.Right AndAlso enemy.enemy.Right < picMario.Right Then
If picMario.Top < enemy.enemy.Top AndAlso enemy.enemy.Top < picMario.Bottom Or picMario.Top < enemy.enemy.Bottom AndAlso enemy.enemy.Bottom < picMario.Bottom Then
'MsgBox("Collision")
End If
End If
If enemy.enemy.Left < 0 Then
lstEnemy.Remove(enemy)
Me.Controls.Remove(enemy.enemy)
End If
Next
End Sub
Der Fehler ich erhalte, ist: Eine nicht behandelte Ausnahme des Typs ‚System.InvalidOperationException‘ ist in mscorlib.dll aufgetreten Zusätzliche Informationen: Die Auflistung wurde geändert; Aufzählungsoperation wird möglicherweise nicht ausgeführt.
Wenn jemand helfen könnte, wäre das großartig, danke.
Sie canot die Sammlung wie diese während Schleifen ändern aus offensichtlichen Gründen, wenn Sie darüber nachdenken. Holen Sie sich einen Verweis auf das Objekt, während in der Schleife, dann löschen – DavidB