private void RaiseRepeatEvents(GameTime gameTime, KeyboardState currentState) { var elapsedTime = (gameTime.TotalGameTime - _lastPressTime).TotalMilliseconds; if (currentState.IsKeyDown(_previousKey) && ((_isInitial && elapsedTime > InitialDelay) || (!_isInitial && elapsedTime > RepeatDelay))) { var args = new KeyboardEventArgs(_previousKey, currentState); if (args.Character.HasValue) RaiseEvent(KeyTyped, args); _lastPressTime = gameTime.TotalGameTime; _isInitial = false; } }
private void RaisePressedEvents(GameTime gameTime, KeyboardState currentState) { if (!currentState.IsKeyDown(Keys.LeftAlt) && !currentState.IsKeyDown(Keys.RightAlt)) { var pressedKeys = Enum.GetValues(typeof (Keys)) .Cast<Keys>() .Where(key => currentState.IsKeyDown(key) && _previousState.IsKeyUp(key)); foreach (var key in pressedKeys) { var args = new KeyboardEventArgs(key, currentState); RaiseEvent(KeyPressed, args); if (args.Character.HasValue) RaiseEvent(KeyTyped, args); _previousKey = key; _lastPressTime = gameTime.TotalGameTime; _isInitial = true; } } }
/// <summary> /// Manda la señal de tecla presionada a cada uno de sus controles. /// </summary> /// <param name="key">Key.</param> public virtual void MandarSeñal (KeyboardEventArgs key) { foreach (var x in Components.OfType<IReceptor<KeyboardEventArgs>> ()) x.RecibirSeñal (key); }
/// <summary> /// Rebice señal del teclado /// </summary> /// <returns>Devuelve <c>true</c> si la señal fue aceptada.</returns> /// <param name="key">Señal tecla</param> public virtual bool RecibirSeñal (KeyboardEventArgs key) { MandarSeñal (key); return true; }
public override bool RecibirSeñal (KeyboardEventArgs key) { if (key.Key == Microsoft.Xna.Framework.Input.Keys.Escape) { Juego.Exit (); return true; } Debug.WriteLine (string.Format ( "{0}:{1}:{2}", key.Character, key.Key, key.Modifiers)); return base.RecibirSeñal (key); }