我wan't知道我怎麼能提高我處理事件SFML方式:SFML解析事件代碼
所以我有一個函數調用processEvents(),有對事件類型的開關,我也對每種類型都有一個函數(如mousePressed,mouseReleased,keyPressed ...)。我的問題是這些函數的大小,因爲我也有一個遊戲狀態的枚舉類,所以在每個函數中都有一個開關,並且在每種情況下我都做了不同的事情,結果是例如mouseReleased長341線。
我想知道如何解析更好的事件以減小函數的大小。
我wan't知道我怎麼能提高我處理事件SFML方式:SFML解析事件代碼
所以我有一個函數調用processEvents(),有對事件類型的開關,我也對每種類型都有一個函數(如mousePressed,mouseReleased,keyPressed ...)。我的問題是這些函數的大小,因爲我也有一個遊戲狀態的枚舉類,所以在每個函數中都有一個開關,並且在每種情況下我都做了不同的事情,結果是例如mouseReleased長341線。
我想知道如何解析更好的事件以減小函數的大小。
你可以有一個std::vector<bool> down
和用於索引的關鍵代碼或鼠標按鈕(所以一個矢量鍵盤和另一個鼠標)。然後,當收到事件按下時,您只需執行down[event.key.code] = true
,並在收到發佈的事件時將其設置爲false
。
您實際上想要分散處理代碼。使各種組件能夠在某個'sfml event-dispatcher'對象上爲事件註冊處理程序。該對象的唯一工作是在事件到達時調用相應的處理程序(可以使用std :: function表示),而不必知道該處理程序的確切內容。
謝謝,我不知道std :: function如何工作,但我可以學習:) – sleiphir
拆分成多個較小的函數? –
看看[托爾行動](http://www.bromeon.ch/libraries/thor/tutorials/v2.0/actions.html) –
謝謝,看起來很有趣 – sleiphir