Creemos una subclase sencilla que cambie de color al hacer
clic-izquierdo. Crea una nueva clase igual que hicimos con
Spacewar!, pero como subclase de EllipseMorph con
#ColorClickEllipse.
EllipseMorph subclass: #ColorClickEllipse instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Spacewar!'
Guarda la definición de la clase con Ctrl-s.
Haz clic-derecho del ratón en el panel Message
Category (Categoría de mensajes) y selecciona new
category... (nueva categoría). Aparecerán varias opciones y podremos
crear otras nuevas. Selecciona «event handling testing» (prueba de
gestión de eventos). A continuación, añada el método
ColorClickEllipse>>handlesMouseDown:.
handlesMouseDown: aMouseButtonEvent "Answer that I do handle mouseDown events" ^ true
Del mismo modo, añade una nueva categoría «event handing» y añade el otro método que necesitamos.
mouseButton1Up: aMouseButtonEvent localPosition: localEventPosition "I ignore the mouseEvent information and change my color." self color: Color random
Ahora, has creado una nueva clase Morph y puedes seleccionar un
ColorClickEllipse en el menú World New Morph... y
probarlo. Es divertido hacer clic-izquierdo sobre ellos. ¡Crea
tantos como quieras!
Figura 6.13: Obtener una ColorClickEllipse
Ahora ya sabes cómo especializar un morph individual o crear una clase completamente nueva.