Я пробовал искать ответ здесь в предыдущих сообщениях, но я его не нашел.
Я играю в MonoGame, и решил, что хочу иметь обработчик клавиатуры на основе событий.Словарь событий (каждое значение может содержать несколько методов)
Так класс KeyboardHandler одноэлементно класса, И сейчас он имеет:
- делегировать недействительный KeyPressEventHandler()
- события этого делегата для клавиш со стрелками четыре
- статический экземпляр класса для одноточечного
- получить метод для этого экземпляра
- метод потоков while (true) и метод, который создает поток, который вызывает этот метод.
Метод потока - это всего лишь некоторое время (правда), которое проверяет, нажато ли нажатие любой из четырех клавиш со стрелками и при необходимости активирует их соответствующее событие.
Я хочу, чтобы иметь возможность создать словарь <Keys, (event or whatever)>
, так что я могу, например:
void doSomething() { }
KeyboardHandler.Get().SubscribeToEvent(Keys.A, doSomething)
void SubscribeToEvent(Keys key, Action toSubscribe)
{
this.KeypressHandler[key] += new KeypressEventHandler(tobSubscribe)
}
И метод, который будет обрабатывать стрельбы этих обработчиков событий, конечно.
Но как объявить такой словарь?
EDIT: в конце концов, здесь реализована: https://github.com/gioragutt/training/blob/master/MonoGameFirst/MonoGameFirst/BaseGameClasses/KeyboardHandler.cs
Привет, чувак, спасибо за ответ, я не понимал, что вы можете поместить делегат в качестве значения в словаре. Это работало чудеса, поэтому мне удалось решить это самостоятельно, но все равно большое спасибо. –
Разум рассматривает мою часть кода здесь? https://github.com/gioragutt/training/blob/master/MonoGameFirst/MonoGameFirst/BaseGameClasses/KeyboardHandler.cs –
@GioraGuttsait Я не очень разбираюсь в обзоре кода. Но если ваш код теперь работает, и у вас есть некоторые конкретные вопросы (например, эффективность, масштабируемость и т. Д.), Вы можете задать вопрос о [Code Review] (http://codereview.stackexchange.com/). Обязательно прочитайте их руководства по теме, но это более подходящее место, чтобы спросить. Вы получите больше глаз от людей, действительно посвященных обзору кода. – ryanyuyu