Eventos

Ejercicio 8.1

El método handlesMouseOver:, implementado en la clase morph SpaceWar, devuelve verdadero para que el juego sea informado de los eventos de paso del ratón en métodos dedicados.

SpaceWar>>handlesMouseOver: event
   ^ true

Ejercicio 8.2

Debes buscar el método Morph>>handlesMouseOver: y leer el comentario. Habla sobre un mensaje #mouseEnter:; implementamos el método correspondiente en la clase SpaceWar con los comportamientos descritos anteriormente:

SpaceWar>>mouseEnter: event
   event hand newKeyboardFocus: self.	
   self startStepping

Ejercicio 8.3

El mensaje #mouseLeave: se envía a nuestra instancia SpaceWar cada vez que el cursor del ratón sale (abandona) el juego. Por lo tanto, añadimos el método homónimo a la clase SpaceWar:

SpaceWar>>mouseLeave: event
   event hand releaseKeyboardFocus: self.
   self stopStepping

Ejercicio 8.4

El mensaje #handlesKeyboard se envía a un morph para saber si desea recibir eventos del teclado. El morph responde true a este mensaje para indicar su interés en los eventos del teclado. Implementamos el método en la clase SpaceWar:

SpaceWar>>handlesKeyboard
   ^ true

Ejercicio 8.5

Designamos los caracteres como $w $a $s $d. Añadimos el siguiente código al método SpaceWar>>keyStroke:

key = $w ifTrue: [^ ships second push].
key = $d ifTrue: [^ ships second right].
key = $a ifTrue: [^ ships second left].
key = $s ifTrue: [^ ships second fireTorpedo]