Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 09-may-2006, 12:35   #1 (permalink)
Erume ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2006
Mensajes: 25
Detener objeto

Hey!.
Vereis, tengo un objeto que al hacer click sobre un componente, se desplaza hasta el lugar donde se ha producido el click. Debe pararse justo en el punto donde se pulsó el ratón. La cosa es que al ir comparando sin parar la variable de posicion del objeto con su meta, el programa se me traba y me va lentísimo, porque uso un while hasta que llegue a donde se pulsó y detenerlo. ¿Como puedo chequear esto sin que se me pete el programa?
__________________
"El río más profundo siempre es el más silencioso"
Erume está desconectado   Responder Citando
Antiguo 09-may-2006, 13:28   #2 (permalink)
chuidiang tiene algunos puntos positivos de karma
 
Avatar de chuidiang
 
Fecha de Ingreso: octubre-2004
Mensajes: 721
Hola:
Para que el programa no se "trabe" lanza un hilo separado para hacer eso.

Lo del hilo es así

Código:
Thread hilo = new Thread (new Runnable()
{
   public void run()
   {
      while (...)
      {
          ...
      }
   }
});
hilo.start();
Si no lanzas el hilo te está pasando lo siguiente. El código del click de ratón java lo ejecuta en el mismo hilo que refresca y pinta las ventanas. Si terminas rápido el método, las ventanas se quedan sin refresco y el programa da la sensación de estar colgado. Por ello, cuando al pulsar un botón, hacer un click o cualquier otro evento de ratón preveas que vas a tardar, es mejor lanzar un hilo que haga esa tarea y devolver el control a java rápidamente.

Se bueno.
chuidiang está desconectado   Responder Citando
Antiguo 11-may-2006, 08:38   #3 (permalink)
Erume ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2006
Mensajes: 25
Aprovecho este hilo para preguntar otra cosa relacionada...

En java las posiciones se miden por enteros?. Me explico, cada objeto tiene una imagen, y se va dibujando en su posición. El método que dibuja la imagen en cada momento recibe como parámetros enteros. Así que la posición de un objeto (donde está dibujada) se maneja con enteros, no?.

Ahora viene el problema. Quiero que el objeto se desplace de un lugar a otro ( de momento en linea recta) con una velocidad v, siempre la misma. Pero claro, depende de hacia adonde apunte el vector de la velocidad (espero estar explicandome bien), la velocidad sobre el eje x y el eje y variará. Para calcular la velocidad sobre los ejes tengo que recurrir a senos y cosenos y ... plaf. Al convertirlos a enteros para variar la posición, me trunca todo el decimal, y teniendo en cuenta que los senos y cosenos van de -1 a 1... pues al final me va a una posición bastante alejada, porque las velocidades han sido suuuper redondeadas ( no se si se me entiende).

Como puedo solucionar esto?
__________________
"El río más profundo siempre es el más silencioso"
Erume está desconectado   Responder Citando
Antiguo 11-may-2006, 09:27   #4 (permalink)
chuidiang tiene algunos puntos positivos de karma
 
Avatar de chuidiang
 
Fecha de Ingreso: octubre-2004
Mensajes: 721
Hola:

Efectivamente las posiciones van en enteros, porque estás pintando pixels en pantalla. El primer pixel es el 0, el segundo el 1, etc. No hay pixel 1,35883.

Lo que debes hacer es echar las cuentas y guardarte los valores en variables double o float. Convertir sólo a entero en el momento justo de pintar y sólo para pintar, manteniendo el antiguo valor float en su sitio.

Para redondear en el momento de pintar, usa Math.round(), así te dará el entero más cercano y 7,9 te lo pondrá como 8, y no como 7

Se bueno.
chuidiang está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 18:47.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93