2013-04-08 100 views
0

我试图在c#visual studio 2010中创建一个小游戏。 我试图在Windows窗体应用程序中制作类似游戏Bubble Trouble的游戏。Windows窗体应用程序中的多个计时器

我用工具箱中的3个定时器创建了一个表单。 一个用于移动玩家的动作(他通过更改标签图像移动其腿) - 此计时器设置为在事件OnKeyDown上启用,并在事件onKeyUp上停止。

拍摄的第二个定时器 - 当按下空格键时,该定时器设置为在事件“onKeyPress”上启用。并且这个计时器被用于一片一片地画出射击线。

而第三个计时器是用于球员应该弹出的球 - 这个计时器总是运行,它的使用是移动球。

但我发现的问题是,当我增加球定时器的时间间隔 - 然后当其他定时器设置为启用,他们都变得非常缓慢。

我能做些什么来解决这个问题?

+1

你可以发布你的代码吗?你可能想查看'System.Timers.Timer'而不是'System.Windows.Forms.Timer'。我不确定WinForms命名空间计时器是否有一些奇怪的限制,如你所描述的... – 2013-04-08 01:32:50

+0

在增加球定时器的间隔期间,你有没有经历过延迟?这也可能是由高内存成本造成的。 – Fendy 2013-04-08 01:39:19

回答

0

我建议重新分解代码中的位,如下所示:

  1. 而不是启用,并在该keydown和KeyUp事件禁用定时器,改变模块级状态变量的值。

例如:

为拍摄键该keydown可以这样做:

_shootKeyDown = True 

为拍摄键的KEYUP可以这样做:

_shootKeyDown = False 

然后,您可以处理所有需要在任何时间间隔发生的单个计时器事件中更新的元素。

If _shootKeyDown Then 
    ... 
End If 

If _playerDirection <> "" Then 
    ... 
End If 

If _ballExists Then 
    ... 
End If