|
Applets Java
En esta p�gina:
Eventos
La interacci�n con el usuario se obtiene en Java por medio de eventos,
como ya fue explicado. Cuando sucede un evento que afecta al applet, la
m�quina virtual de Java ejecuta un m�todo que se llama controlador de
eventos. En principio esos m�todos no tienen nada, por lo que deberemos
sobreescribirlos en funci�n de nuestras necesidades. Esos m�todos son:
- boolean mouseDown(Event, int, int)
- Llamado cuando pulsamos un bot�n del rat�n; los par�metros segundo y
tercero contienen la posici�n del rat�n cuando ocurri� el evento,
mientras que el primero en un objeto que contiene informaci�n adicional
sobre el mismo.
- boolean mouseUp(Event, int, int)
- Llamado cuando soltamos el bot�n del rat�n despu�s de haberlo
pulsado.
- boolean mouseMove (Event, int, int)
- Llamado cuando movemos el rat�n.
- boolean mouseDrag (Event, int, int)
- Llamado cuando movemos el rat�n con un bot�n pulsado.
- boolean mouseEnter (Event, int, int)
- Llamado cuando el rat�n entra en el applet.
- boolean mouseExit (Event, int, int)
- Llamado cuando el rat�n abandona el applet.
- boolean keyDown(Event,int)
- Llamado cuando se pulsa una tecla. El argumento entero indica cu�l.
- boolean keyUp(Event, int)
- Llamado cuando se suelta una tecla.
Como ejemplo, podemos hacer un ojo que sigue al
rat�n: Ojo.java /**
* Applet Ojo
*
* <APPLET CODE="Ojo.class" WIDTH="300" HEIGHT="300">
* <PARAM NAME="Cadena" VALUE="Esto s� que es chulo">
* </APPLET>
*/
import java.applet.Applet;
import java.awt.*;
public class Ojo extends Applet {
int ancho, alto, anchoOjo, altoOjo, anchoPupila, altoPupila;
int xOjo, yOjo, xPupila, yPupila, xActual, yActual;
Image buffer;
Graphics pantallaVirtual;
public void init() {
ancho = getBounds().width;
alto = getBounds().height;
anchoOjo = ancho / 2;
altoOjo = alto / 2;
anchoPupila = anchoOjo / 2;
altoPupila = altoOjo / 2;
xOjo = anchoOjo - anchoPupila;
yOjo = altoOjo - altoPupila;
xPupila = xOjo + anchoPupila/2;
yPupila = yOjo + altoPupila/2;
xActual = xPupila;
yActual = yPupila;
buffer = createImage(ancho, alto);
pantallaVirtual = buffer.getGraphics();
}
public void paint(Graphics g) {
g.setColor(Color.yellow);
g.fillOval(xOjo, yOjo, anchoOjo, altoOjo);
g.setColor(Color.black);
g.fillOval(xActual, yActual, anchoPupila, altoPupila);
}
public void update(Graphics g) {
Color colorTemporal = pantallaVirtual.getColor();
pantallaVirtual.setColor(Color.white);
pantallaVirtual.fillRect(0, 0, ancho, alto);
pantallaVirtual.setColor(colorTemporal);
paint(pantallaVirtual);
g.drawImage(buffer, 0, 0, this);
}
public boolean mouseMove(Event evt, int x, int y) {
xActual = (xPupila*21 + x*8)/32;
yActual = (yPupila*21 + y*8)/32;
repaint();
return true;
}
}
El controlador de evento mouseMove se
ejecuta cuando el rat�n se mueve por encima del applet. Es en ese momento
cuando se modifica la situaci�n de la pupila del ojo, siguiendo al puntero
del rat�n. La "formula", la verdad, est� hallada a ojo, cosa que me
pareci� muy natural en este caso. Adem�s, hacerlo bien requerir�a que nos
metieramos en asuntos trigonom�tricos, y son asuntos estos muy
peliagudos.
|
|