2013-04-08 55 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 
相關問題