J'ai une classe qui gère l'entrée au clavier et se déclenche KeyPressed, KeyReleased, ou KeyHeld événements. Il déclenche uniquement un événement si la clé existe dans la collection KeyBindings de mon composant Controller. Maintenant que j'ai tout ce travail, je suis coincé sur un problème. Ce que je veux est le suivant:Comment ajouter une fonction à une collection?
Key pressed.
if(Key bind exists)
Fire key pressed event.
foreach(function in keyBinds)
{
execute function, fire event, whatever...
}
Je ne peux juste pas comprendre comment la boucle de foreach fonctionnerait. Des idées sur comment je pourrais tirer quelque chose comme ça?
keyboardcontroller Composant:
public class KeyboardController : IComponent
{
//Fields
private Dictionary<Keys, HashSet<Delegate>> m_keyBindings = new Dictionary<Keys,HashSet<Delegate>>();
//Properties
public Dictionary<Keys, HashSet<Delegate>> KeyBindings
{
get { return m_keyBindings; }
}
}
C'est la classe qui contiendra les touches et leur fonction/délégué/événement/quelles que soient les liaisons. Le code pour les événements ne peut pas être contenu dans cette classe, car la classe est destinée uniquement à stocker des données. Je dois passer une liaison de clé et une action ou un ensemble d'actions à effectuer lorsque cette liaison est enfoncée.
Ajout d'une liaison:
//Set key bindings
KeyboardController kbController = entityManager.GetComponent<KeyboardController>(1);
kbController.KeyBindings.Add(Keys.Up, new HashSet<Delegate>());
kbController.KeyBindings[Keys.Up].Add(function);
Je ne sais pas comment faire la troisième ligne dans « Ajout d'une liaison: » travail.
Vous cherchez juste pour la fonction d'événement intégré dans C#? http://msdn.microsoft.com/en-us/library/8627sbea.aspx –
Non, je suis à la recherche de la fonctionnalité spécifique d'avoir une collection de fonctions/événements/quoi exécuter/déclencher quand un événement KeyPress particulier est mis à la porte. Je veux être capable de "coller" sur les événements à peu près à volonté. – Kittoes0124
Je vois. J'ajoute une réponse avec une autre solution possible maintenant. –