6.5 Construyendo tu Morph especializado

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!

ch06-15-ColorClickEllipse

Figura 6.13: Obtener una ColorClickEllipse

Ahora ya sabes cómo especializar un morph individual o crear una clase completamente nueva.