El hardware moderno integrado System On a Chip (SOC)
tiene muchos circuitos que están activos al mismo tiempo. Por lo tanto,
un tipo de evento es detectar algo que está sucediendo en el mundo. La
clase EventSensor gestiona las pulsaciones del teclado y las
interrupciones de hardware del ratón, traduciendo entre las
señales del hardware y los objetos de eventos del software.
Básicamente, un morph levanta la mano y dice qué eventos, si los
hay, le interesan recibir. A continuación, implementa métodos para
obtener los objetos de evento que contienen la información de los
eventos capturados. En Cuis-Smalltalk, la clase MorphicEvent
y sus subclases representan la diversidad de eventos del sistema.
MorphicEventDropEventDropFilesEventUserInputEventKeyboardEventMouseEventMouseButtonEventMouseMoveEventMouseScrollEventWindowEvent
A medida que se generan los eventos MouseMoveEvents, el
HandMorph ajusta su posición en la pantalla. Cuando llegan
eventos del ratón y pulsaciones de teclas, el HandMorph
coordina el «envío» de eventos al morph adecuado bajo el cursor, además
de mostrar información sobre herramientas y transportar morphs en
tránsito durante las operaciones de arrastre.
Como vimos en el capítulo anterior con ColorClickEllipse,
cualquier morph puede anular los métodos predeterminados de
Morph para afirmar que gestiona diversos eventos de usuario y
los métodos que toman los objetos de evento asociados cuando llegan los
eventos.
Básicamente, se generan eventos de entrada del usuario, un
HandMorph refleja cualquier movimiento del cursor, los morphs
reaccionan a los eventos, cada tarea de larga duración obtiene un
intervalo de tiempo y avanza, cualquier cambio en la visualización se
actualiza en la pantalla y se pasa al siguiente paso. El tiempo avanza
un paso.
Esto ocurre una y otra vez, manteniendo la ilusión del malabarista de que todas las pelotas en el aire se mueven al mismo tiempo. Por debajo, cada una de las pelotas se mueve ligeramente, en secuencia.