-
Notifications
You must be signed in to change notification settings - Fork 0
Clases Unity con Ejemplos
La interfaz gráfica de usuario son los objetos, textos, botones y demás elementos que se muestran en la pantalla con la que interactúa el usuario. Muestra datos del videojuego como las estadísticas del jugador, mapas del escenario , botones para realizar acciones, textos informativos que permiten visualizar e informar al usuario todo lo que está pasando en ese momento. II. CAPTURA DE EVENTOS UNITY 3D Para realizar la captura de eventos se usa la clase Input, la cual es una interfaz que controla todo el sistema de entradas (inputs) de Unity. Esta clase se usa, por ejemplo, para leer la configuración de ejes en el input Manager.
Para leer un eje se usa Input.GetAxis que capta por defecto los movimientos en los ejes Horizontal y Vertical, están configurados para joystick, así como A, W, S, D, y las teclas de flecha. MouseX y MouseY están configurados para el movimiento del ratón. Por su parte Fire1, Fire2 y Fire3 están configurados para Ctrl, Alt y tres botones de ratón o joystick. Input Manager permite agregar más ejes de entrada.
Si hemos se usar inputs para cualquier tipo de comportamiento que entrañe movimiento, es aconsejable usar Input.GetAxis. Esto nos dará una entrada más suave y configurable que puede servir para teclado, joystick o mouse. En cambio es mejor usar Input.GetButton para acciones como eventos, mejor que para movimientos. Para ver el resultado en pantalla las llamadas a inputs se deben hacer dentro de la función Update.
VARIABLES ESTATICAS
• Acceleration (Aceleración): Lectura de la última aceleración tomada en un espacio tridimensional.
• AccelerationEventCount: Numero de mediciones de la aceleración que se produjeron durante el último fotograma.
• AccelerationEvents: Devuelve una lista con las mediciones de la aceleración que se produjeron en el último fotograma (es de solo lectura, además de asignar variables temporales).
• AnyKey: Detecta si se está presionando cualquier tecla o botón del mouse.
• AnyKeyDown: Devuelve verdadero el usuario que pulso una tecla o un botón del mouse en un Frame.
• Compass: Propiedad de brújula que se agrega únicamente a los dispositivos de mano.
• CompensateSensors: Verifica si los sensores de entrada deben ser compensados por orientación de la pantalla.
• CompositionCursorsPos: Posición de entrada de texto actual que utiliza los IME para abrir ventanas.
• CompositionString: La actual composición de string que está siendo escrita por el usuario.
• DeviceOrientation: Dispositivo d orientación física que es reportado por el SO.
• Gyro: Devuelve un giroscopio por defecto.
• ImeCompositionMode: Controles de activación y descativacion de la composición de entrada IME.
• ImelsSelected: Revisa si el usuario ha seleccionado una entrada del teclado IME.
• InpoutString: Devuelve la tecla oprimida en este frame.
• Location: Propiedad para acceder a los dispositivos de localización. Solo dispositivos de mano.
• MousePosition: La actual posición del mouse en las coordenadas de un pixel.
• MultiTouchEnabled: Propiedad que se encarga de detectar diferentes toques.
• TouchCount: Numero de toques. Garantizado para no cambiar a lo largo del Frame.
• Touches: Devuelve una lista con los objetos representando el estado de todos los toques hechos durante el último frame.
STATIC FUNCTIONS
• GetAccelerationEvent: Devuelve la aceleración especifica media que ocurrió durante el último frame. No asigna variables temporales.
• GetAxis: Devuelve el valor del eje virtual identificado por el nombre del eje.
• GetAxisRaw: Devuelve el valor del eje virtual identificado por el nombre del eje sin el filtro de suavizado aplicado.
• GetButton: Devuelve verdadero mientras el botón virtual identificado por un nombre se mantiene presionado.
• GetButtonDown: Devuelve verdadero durante el frame que el usuario mantiene presionado un botón identificado por un nombre.
• GetButtonUp: Devuelve verdadero al primer frame cuando el usuario suelta el botón virtual identificado por un nombre.
• GetJoystickNames: Devuelve un arreglo de string que describen los joysticks que están conectados.
• GetKey: Devuelve el nombre de la tecla identificada por un nombre que el usuario mantiene presionada, Pensado para el autofire.
• GetKeyDown: Devuelve verdadero durante el frame que el usuario empezó a presionar una tecla identificada por un nombre.
• GetKeyUp: Devuelve verdadero durante el frame que el usuario suelta la tecla identificada por el nombre.
• GetMouseButton: Devuelve si el botón dado se mantiene presionado.
• GetMouseButtonDown: Devuelve verdadero durante el frame que el usuario presiona el botón del mouse.
• GetMouseButtonUp: Devuelve verdadero durante el frame que el usuario suelta el botón del mouse.
• GetTouch: Devuelve el objeto representado el estado de un toque especifico.
• ResetInputAxes: Restablece todas la entradas. Después de esto todos los ejes y botones cambian a cero por un frame.
Aqui un ejemplo de GUI donde se encuentran los diferentes objetos GUI y tambien un ejemplo de la salud del personaje.

documentacion unity
Objetos GUI.

documentacion unity
Salud Personaje.
Referencia:
http://docs.unity3d.com/Documentation/ScriptReference/Input.html
http://unityscripts.blogspot.com/2011/10/99-clase-input-i.html
Ramiro Andres
Unity tiene incorporado un sistema propio para generar los elementos habituales de una GUI como pueden ser botones, campos de texto o scrolls. La clase GUI implementa una serie de métodos que nos permite configurar y crear una interfaz de ususario que se ajuste a las necesidades y el contexto del desarrollo que se este realizando en este motor.
Las clases que controlan la creacion y gestion de GUI en Unity son:
CLASES EDICIÓN DE GUI:
-
EditorGUI: Funciona muy parecido a las funciones normales de la GUI y también tienen implementaciones coincidentes en EditorGUILayout.
-
EditorGUILayout: Versión Auto-layout de EditorGUI.
-
EditorGUIUtility: Diversas funciones auxiliares para la clase EditorGUI.
CLASES EN TIEMPO DE EJECUCIÓN GUI:
-
GUIElement: Clase base para las imágenes y las cadenas de texto que se muestran en una interfaz gráfica de usuario.Esta clase contiene la funcionalidad básica para todos los elementos de la GUI.
-
GUIText: Una cadena de texto que se muestra en una interfaz gráfica de usuario.
-
GUITexture: Una imagen de textura utilizada en una GUI 2D.
-
GUILayer: Componente añadido a una cámara para hacer que renderice elementos de la GUI 2D.
-
GUI: Es la interfaz de Unity para la creación de GUI con posicionamiento manual.
-
GUIContent: El contenido de un elemento GUI. Esta clase funciona de cerca con GUIStyle . GUIContent define lo que se va a renderizar y GUIStyle define cómo renderizarlo.
-
GUILayout: Es la interfaz para GUI en Unity con diseño (Layout) automático.
-
GUILayoutOption: Clase utilizada internamente para pasar opciones de diseño dentro d elas funciones de GUILayout. No se utiliza directamente, sino que se construye con las funciones de maquetación en la clase GUILayout.
-
GUILayoutUtility: Funciones de utilidad para implementar y extender la clase GUILayout.
-
GUISettings: Configuración general de cómo se comporta la GUI. Estos son compartidos por todos los elementos en un GUISkin.
-
GUIStyle: El estilo de información para elementos de la GUI. La mayoría de las funciones de la GUI aceptan un parámetro GUIStyle opcional para anular el estilo por defecto. Esto permite colorear, cambiar fuentes y otros detalles para cambiar y cambian para diferentes estados (por ejemplo, cuando el ratón se cierne sobre el control). Cuando se prescriba un look-and-feel consistente sobre un diseño GUI conjunto, la clase GUISkin es una forma útil de recopilar un conjunto de ajustes GUIStyle y aplicarlos todos a la vez.
-
GUIStyleState: Valores especializados para los estados dados utilizados por objetos GUIStyle. El GUIStyle contiene todos los valores para la visualización de elementos de la GUI.
-
GUIUtility: Clase de utilidad para la creación de nuevos controles de GUI. A menos que se esté creando controles propios de GUI desde cero, no se deben utilizar estas funciones.
-
GUISkin: Define en la GUI como se ve y se comporta ésta. GUISkin contiene la configuración de la GUI y una colección de objetos GUIStyle que juntos especifican el GUISkin. Para activala, obtenerla y establecerla se puede hacer a través de GUI.skin.
Referencia: http://docs.unity3d.com/Documentation/ScriptReference/
En esta parte de la wiki se explicara muy brevemente las funciones que manejan interfaz grafica unificada, con un respectivo ejemplo para tener claro el uso de ellas.

documentacion unity
En la anterior imagen se ve como configurar el panel para que tome los cambios de acerudo al siguiente script:
/* Declare a GUI Style */ var customGuiStyle : GUIStyle;
El siguiente ejemplo nos sirve para saber que esta interfaz es muy usada para ajustar la imagen, textura , contenido, estilo , texto y posición. Esto para que el usuario pueda escoger entre un nivel o escena a otra.
Un ejemplo básico es el siguiente:
// Draws 2 buttons, one with an image, and other with a text
// And print a message when they got clicked.
var btnTexture : Texture;
function OnGUI() {
if (!btnTexture) {
Debug.LogError("por favor asignar textura");
return;
}
if (GUI.Button(Rect(10,10,50,50),btnTexture))
Debug.Log("clic boton en la imagen");
if (GUI.Button(Rect(10,70,50,30),"Click"))
Debug.Log("clic boton en la imagen");
}
documentacion unity
Las etiquetas no tienen ninguna interacción con el usuario, no se enganchen los clics del ratón, y siempre se prestan en el estilo normal. Si usted desea hacer un control que responde visualmente a la entrada del usuario, utilice un control de Cuadro. Ejemplo: Dibujar la clásica Hello World! cadena:
documentacion unity
El script para crear lo anterior es:
function OnGUI () { GUI.Label (Rect (10, 10, 100, 20), "Holaa mundoo!"); }
Función estática ScrollTo (posición: Rect): void;
Todo lo que encierra scrollviews por lo que trata de hacer que la posición sea visible.
ejemplo:
// Draws a Scroll view with 2 buttons inside.
// When clicked each button it moves the scroll
// where the other button is located
var scrollPos : Vector2 = Vector2.zero;
function OnGUI () {
scrollPos = GUI.BeginScrollView(Rect (10, 10, 100, 50), scrollPos, Rect (0, 0, 220, 10));
if(GUI.Button (Rect (0,0,100,20), "Go Right"))
GUI.ScrollTo(Rect (120,0,100,20));
if(GUI.Button (Rect (120,0,100,20) , "Go Left"))
GUI.ScrollTo(Rect (0,0,100,20));
// End the scroll view that we began above.
GUI.EndScrollView ();
}
documentacion unity
posicionar rectángulo en la pantalla que se utilizará para el campo de texto. El valor de retorno de esta función se debe asignar de nuevo a la cadena como se muestra en el ejemplo.
var stringToEdit : String = "Hola mundo\nI've got 2 lines...";
function OnGUI () {
// Make a multiline text area that modifies stringToEdit.
stringToEdit = GUI.TextArea (Rect (10, 10, 200, 100), stringToEdit, 200);
}
documentacion unity
Hacer un área de texto multilínea, donde el usuario puede editar una cadena.
UnityGUI le permite crear una amplia variedad de interfaces gráficas de usuario altamente funcionales con gran rapidez y facilidad. En lugar de crear un objeto de interfaz gráfica de usuario, posicionando manualmente, y luego escribir un script que se encarga de su funcionalidad, se puede hacer todo a la vez con sólo unas pocas líneas de código. El código produce controles GUI que se crean instancias, colocados y manejados con una sola llamada de función.
Por ejemplo, el siguiente código creará y manejar un botón sin trabajo adicional en el editor o en otros lugares.
// JavaScript function OnGUI () { if (GUI.Button (Rect (10,10,150,100), "I am a button")) { print ("clic con el boton!"); } }
// C#
using UnityEngine;
using System.Collections;
public class GUITest : MonoBehaviour {
void OnGUI () {
if (GUI.Button (new Rect (10,10,150,100), "I am a button")) {
print ("You clicked the button!");
}
}
}
su interfaz es:

documentacion unity
Hay dos modos diferentes que puede utilizar para ordenar y organizar una GUI: fijos y automáticos. Hasta ahora, todos los ejemplos UnityGUI proporcionada en esta guía se ha utilizado de diseño fijo. Para usar diseño automático, escribir GUILayout lugar de interfaz gráfica de usuario al llamar a funciones de control. Usted no tiene que utilizar un modo de diseño sobre el otro, y usted puede utilizar ambos modos a la vez en el mismo OnGUI () función.
Layout fijo tiene sentido utilizar cuando se tiene una interfaz pre-diseñado para trabajar. Diseño automático tiene sentido utilizar cuando no se sabe cuántos elementos que usted necesita desde el principio, o no quieren preocuparse de la mano de posicionamiento de cada control. Por ejemplo, si está creando una serie de botones diferentes en base a los archivos de partida guardada, usted no sabe exactamente cuántos botones se dibujará. En este caso de diseño automático podría tener más sentido. Es realmente depende de el diseño de su juego y la forma en que desea presentar su interfaz.
ejemplo c#:
using UnityEngine;
using System.Collections;
public class GUITest : MonoBehaviour {
void OnGUI () {
// Fixed Layout
GUI.Button (new Rect (25,25,100,30), "I am a Fixed Layout Button");
// Automatic Layout
GUILayout.Button ("I am an Automatic Layout Button");
}
}
documentacion unity

documentacion unity
RepeatButton es una variación del botón normal. La diferencia es, RepeatButton responderá cada fotograma que el botón del ratón sigue deprimida. Esto le permite crear una funcionalidad click-and-hold.
Uso básico En UnityGUI, RepeatButtons devolverá true para cada cuadro que se hace clic. Para ejecutar código mientras se hace clic en el botón, se coloca la función GUI.RepeatButton en una sentencia if. Dentro de la sentencia if es el código que se ejecutará mientras el RepeatButton mantiene pulsado.
// C#
using UnityEngine;
using System.Collections;
public class GUITest : MonoBehaviour {
void OnGUI () {
if (GUI.RepeatButton (new Rect (25, 25, 100, 30), "RepeatButton")) {
// This code is executed every frame that the RepeatButton remains clicked
}
}
}
![]()
documentacion unity
#Toolbar#
El control Toolbar es esencialmente una hilera de botones. Sólo uno de los botones de la barra de herramientas puede estar activo a la vez, y permanecerá activa hasta que se hace clic en un botón diferente. Este comportamiento emula el comportamiento de una barra de herramientas típica. Puede definir un número arbitrario de botones de la barra de herramientas.
Uso básico El botón activo en la barra de herramientas se realiza un seguimiento a través de un número entero. Debe proporcionar el número entero como argumento en la función. Para hacer que la barra de herramientas interactiva, debe asignar el número entero con el valor de retorno de la función. El número de elementos de la matriz de contenido que usted provee determinará el número de botones que se muestran en la barra de herramientas.
// C#
using UnityEngine;
using System.Collections;
public class GUITest : MonoBehaviour {
private bool toggleBool = true;
void OnGUI () {
toggleBool = GUI.Toggle (new Rect (25, 25, 100, 30), toggleBool, "Toggle");
}
}

documentacion unity
Jordan Andrei Cortes, Sergio Alejandro Barrero
##¿Es posible crear interfaces diferentes, a las de standar de clases de unity?
Generelmente es posible crear interfaces aparte, sin utilizar las que trae unity por estandar, simplemente vasta con hacer los siguientes pasos;
-
Instancias
-
Interceptores de instancia y de tipo,
-
Uso del contenedor IoC,
-
Comportamientos.
cada uno de los siguientes pasos no ayudara a crear una interfaz propia sin utilizar las clases estandar de unity. ##Instancias interceptables 1. var calculator = new Calculator();
Hay diferentes formas en las que un marco AOP puede obtener el control sobre una instancia. En Unity podemos recurrir a algunas llamadas explícitas que devuelven un proxy para el objeto original o podemos dejar que todo esto se ejecute al interior de un marco IoC. Unity hay dos ejemplos de esto. Cuando AOP se complementa con IoC, el resultado es una experiencia fluida, fácil y eficiente.
1. var calculator = new Calculator();
2. var calculatorProxy = Intercept.ThroughProxy<ICalculator>(calculator,
3. new InterfaceInterceptor(), new[] { new LogBehavior() });
4. Console.WriteLine(calculatorProxy.Sum(2, 2));
Terminamos trabajando con un proxy interceptable que engloba al objeto original. En este caso, suponemos que la clase Calculator implementa la interfaz Calculator. Para que una clase se pueda interceptar ésta debe implementar una interfaz o ser heredada de MarshalByRefObject. Si la clase se deriva de MarshalByRefObject, entonces el interceptor tiene que ser del tipo TransparentProxyInterceptor:
1. var calculator = new Calculator();
2. var calculatorProxy = Intercept.ThroughProxy(calculator,
3. new TransparentProxyInterceptor(), new[] { new LogBehavior() });
4. Console.WriteLine(calculatorProxy.Sum(2, 2));
La clase Interceptor también ofrece un método NewInstance que podemos llamar para crear un objeto interceptable en forma más directa. Aquí vemos cómo usarlo:
- var calculatorProxy = Intercept.NewInstance(
- new VirtualMethodInterceptor(), new[] { new LogBehavior() });
Interface Interceptor y TransparentProxyInterceptor son dos interceptores de Unity que pertenecen a la categoría de los interceptores de instancia. VirtualMethodInterceptor pertenece a la categoría de los interceptores de tipo.
##Interceptores de instancia y de tipo
InterfaceInterceptor puede interceptar métodos de instancia públicos en exactamente una interfaz del objeto de interés. El interceptor se puede aplicar a las instancias nuevas y las existentes. TransparentProxyInterceptor puede interceptar métodos de instancia públicos en más de una interfaz y es capaz de calcular la referencia con objetos de referencia. VirtualMethodInterceptor permite interceptar los métodos virtuales, ya sean públicos o protegidos. El interceptor en este caso sólo se puede aplicar a las instancias nuevas. La intercepción de tipos emplea generación dinámica de código para devolver un objeto que se hereda del tipo original. De este modo, todos los métodos virtuales públicos y protegidos son reemplazados para permitir la intercepción. Le mostraremos el ejemplo del código:
- var calculatorProxy = Intercept.NewInstance(
- new VirtualMethodInterceptor(), new[] { new LogBehavior() });
La clase Calculator tiene el siguiente aspecto:
public class Calculator {
public virtual Int32 Sum(Int32 x, Int32 y) {
return x + y;
}
}
Existen algunas diferencias importantes entre la intercepción de instancias y la de tipos: por ejemplo al interceptar llamadas de un objeto en sí mismo. Cuando al usar intercepción de tipos un método llama a otro método del mismo objeto, esa llamada autorreferente se puede interceptar, ya que la lógica para la intercepción se encuentra en el mismo objeto. Pero al usar intercepción de instancias la intercepción sólo se produce si la llamada pasa a través del proxy. Como las llamadas autorreferentes obviamente no pasan a través del proxy en este caso no se produce la intercepción.
##Uso del contenedor IoC (inversión del control)
En este ejemplo se utilizo contenedores de IoC que es una capa adicional alredor de la creacion de objetos que nos ayudan a flexibilizar la aplicacion. Ademas la flexibilidad del codigo mejora mas alla de todo, cuando cambiamos los contenedores Ioc con la configuracion sin conexion(en el mismo de este codigo).
las siguientes lineas nos daran un ejemplo que emplea el contenedor de unity con una configuracion fluida basada en el codigo.
1. //Configure the IoC container
2. var container = UnityStarter.Initialize();
3. //Start the application
4. var calculator = container.Resolve<ICalculator>();
6. var result = calculator.Sum(2, 2);
cualquier codigo que sea necesario para inicializar el contenedor se puede apartar dentro de una clase definida, lo cual la podremos invocar una vez cuando se haya iniciado la aplicacion. El arranque del codigo instruye al contendor sobre la resolucion de tipos que esten cercanos de la aplicacion y de como lidear con la intercepcion. Una vez el metodo es llamado Resolve nos aisla de todos los detalles de la aplicacion que estemos interceptando
en el siguiente ejemplo veremos una implementacion posible para el arranque del codigo.
public class UnityStarter {
public static UnityContainer Initialize() {
var container = new UnityContainer();
// Enable interception in the current container
container.AddNewExtension<Interception>();
// Register ICalculator with the container and map it to
// an actual type. In addition, specify interception details.
container.RegisterType<ICalculator, Calculator>(
new Interceptor<VirtualMethodInterceptor>(),
new InterceptionBehavior<LogBehavior>());
return container;
}
}
El anterior codigo se puede transladar a un ensamblado independiente y lo mejor se puede cargar o cambiar de manera dinamica, de este modo toda la configuracion de unity se puede hacer en un mismo lugar.
pero debemos de dejar de usar la clase intercept que se comporta como factory inteligente. Por lo tanto, cuando necesitemos AOP en las aplicaciones, aprovechemos la solución que nos entregan los contenedores de IoC. La misma solución también se puede implementar de manera aún más flexible, trasladando todos los detalles de configuración al archivo app.config (o web.config, en el caso de las aplicaciones para web).
var container = new UnityContainer();
container.LoadConfiguration();
A continuacion nos entregara un Script que se debe tener encuenta en el archivo de configuracion, puesto que qui se registran dos comportamientos para el tipo iCalculator lo cual significa que sera preprocesado y postprocesado.
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<assembly name="SimplestWithConfigIoC"/>
<namespace name="SimplestWithConfigIoC.Calc"/>
<namespace name="SimplestWithConfigIoC.Behaviors"/>
<sectionExtension
type="Microsoft.Practices.Unity.
InterceptionExtension.Configuration.
InterceptionConfigurationExtension,
Microsoft.Practices.Unity.Interception.Configuration" />
<container>
<extension type="Interception" />
<register type="ICalculator" mapTo="Calculator">
<interceptor type="InterfaceInterceptor"/>
<interceptionBehavior type="LogBehavior"/>
<interceptionBehavior type="BinaryBehavior"/>
</register>
<register type="LogBehavior">
</register>
<register type="BinaryBehavior">
</register>
</container>
</unity>
##Comportamientos
En unity los comportamientos(behaviors) son objetos que implementan los asuntos transversales. esta clase de comportamientos (behaviors) es una clase que implementa la interfacez IInterceptionBehavior, y se reescribe en ciclo de ejecucion del metodo y se puede modificar los parametro del metodo o los valores que retorna.
Un comportamiento está formado por tres métodos.
vemos un comportamiento de muestra que intercepta al método Sum y reescribe el valor devuelto como una cadena binaria. El método WillExecute es simplemente una manera de optimizar el proxy. Si éste devuelve false, el comportamiento no se ejecuta.
public class BinaryBehavior : IInterceptionBehavior { public IEnumerable GetRequiredInterfaces() { return Type.EmptyTypes; }
public bool WillExecute { get { return true; } }
public IMethodReturn Invoke(
IMethodInvocation input,
GetNextInterceptionBehaviorDelegate getNext) {
// Perform the operation
var methodReturn = getNext().Invoke(input, getNext);
// Grab the output
var result = methodReturn.ReturnValue;
// Transform
var binaryString = ((Int32)result).ToBinaryString();
// For example, write it out
Console.WriteLine("Rendering {0} as binary = {1}",
result, binaryString);
return methodReturn;
}
}
Esto ya es un poco más util. Siempre se llamará a Invoke, de modo que el comportamiento se ejecutará aun cuando hayamos devuelto false. pero si todos en el ciclo son false entonces no se creara el porxy y volveremos a trbajar con el objeto origunal y todo esto gira a la creacion de los proxy.
- Andrew Rodriguez Sanchez 131505
- Jhon Jairo Chaparro Ceballes 111006
##EVENTOS SOPORTADOS POR UNITY 3D
Los eventos correspondientes a unityGUI son aquellos que correspoden a los diferentes entradas que pueda hacer el usuario (controlador) ejemplo de esto seria: Precionado de botones, acciones con el mouse, etc. a continuación se describiran las diferentes variables que se pueden utilizar y una pequeña descripcion de estas.
- VARIABLES ESTÁTICAS
current: Este señala el evento que está siendo procesado en el momento
- VARIABLES
Alt: comprueba si la tecla alt del teclado en windows o la tecla option del teclado de mac OS esta siendo presionado.
Button: Comprueba cual boton del mouse o raton está siendo presionado
capsLock: verifica si la tecla capsLock (mayuscula) está activa
character: Si una letra ha sido presionada y cual.
ClickCount: Es un contador de click's dados.
Command: Verifica si la tecla windows/command está siendo presionada
CommandEvent: comandos como copiar, pegar, seleccionar todo, los reconoce y los muestra si envia por debug
control: Comprueba si la tecla Ctrl del teclado está siendo presionada
Delta: Compara la posicion del puntero del mouse con la anterior capturada
FunctionKey: Comprueba si la tecla fn del teclado está siedo presionada.
iskey: verificia si el evento es por teclado
isMouse: verifica si el evento viene por el mouse (raton)
Keycode: devuelve el identificador de la tecla presionada, utiluzado comunmente con las teclas de funcion y de cursor del teclado
modifiers: Comprueba cual(es) tecla modificadora está siendo presionada(s) (shift, ctrl, alt, command, numeric, capslock, functionkey)
mousePosition: devuelve la posicion del cursor del mouse en pantalla
numeric: solo verifica si la tecla presionada se encuentra en el panel numerico del teclado
shift: Comprueba si la tecla shift está siendo presionada.
type: Captura el tipo de evento en proceso.
- Functions (funciones)
use: se utiliza para usar un evento especifico
- Static Functions (Funciones Estaticas)
KeyboardEvent: Para crear nuevos eventos de teclado.