vb.net移动对象的更多性能

时间:2010-05-31 20:10:15

标签: vb.net

我的任务是为学校项目制作一个小游戏。图片框,由一个计时器移动来移动敌人。如果表格中有大约5或6个移动图片框,我的应用程序会遇到麻烦和滞后。在我杀死了一些敌人(从表格/面板的控件集合中移除它们)之后它恢复顺畅。

我认为敌人运动的循环过于复杂,但我不知道如何使这更简单。

Private Sub TimerEnemyMovement_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerEnemyMovement.Tick
    For Each Enemy As Control In PanelBackground.Controls
        If Enemy.Name.Substring(0, 5) = "Enemy" Then
            _enemy.MoveEnemy(Enemy, 2)
        End If
    Next
End Sub

我也考虑过多线程,但不确定这会解决问题,还有一个问题是我无法访问我的mainform的控件。

你知道,我对vb.net没了太多了解

如何解决这种滞后的想法?

5 个答案:

答案 0 :(得分:2)

试试这个:

Private Sub TimerEnemyMovement_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerEnemyMovement.Tick
    SuspendLayout()
    For Each Enemy As Control In PanelBackground.Controls
        If Enemy.Name.Substring(0, 5) = "Enemy" Then
            _enemy.MoveEnemy(Enemy, 2)
        End If
    Next
    ResumeLayout()
End Sub

答案 1 :(得分:0)

VB.NET WinForm应用程序不是创建游戏或移动对象的理想设置。你发现,表格的绘画使用了很多表现。

尝试迁移到VB.NET WPF(Windows Presentation Framework)应用程序,它可以更好地处理图形。

答案 2 :(得分:0)

只是提出一些可能会提高速度的建议

a)如何将它们存储在数组/列表中,而不是通过所有控件 b)旧的游戏技巧是在内存中绘制场景然后将其复制到屏幕..所以为什么没有内存位图(或图形)将“敌人”绘制到此,然后一旦完成就复制到整个bmp到屏幕

答案 3 :(得分:0)

所有敌人是否需要同时移动?有些行动更快吗?

如果有6个敌人,你可以在第一个刻度上移动1,3,5,然后在下一个刻度上移动2.4.6等。

答案 4 :(得分:0)

我一直在使用XNA创建一个简单的游戏,它真的很酷。虽然VB.NET没有得到官方支持,但你可以使它工作。它针对风景和大量动画对象进行了优化。