|
Indice | Temas Recientes | Quién Está en LÃnea | Lista de Usuarios | Mi Perfil | Búsqueda | Ayuda |
![]() |
mvnForum » Listar todos los foros » Foro: Curso PLJ » Tema: Retardo pintando comida |
Total de mensajes en este tema: 6 |
[Eliminar este Tema]
[Mover este Tema] [AÅadir a Mis Favoritos] [AÅadir un aviso a este tema] [Publicar nuevo tema] |
Autor |
|
![]() Extranjero
|
Muy buenas: Aqui pongo mi método dibuja, el error que me da es que cada vez que arranco el juego, no veo la comida hasta que baja una altura mas o menos como la de yogui, pero cuando baja la segunda comida aparece desde arriba del todo y también las demás, ¿a que se puede deber? ¿ Porque solo me ocurre con la primera comida que baja? public void dibuja(Graphics g) { // Limpiar area g.clearRect(0, 0, ANCHO, ALTO); // Dibujar fondo g.drawImage(fondo, 0, 0, ANCHO, ALTO, this); // Dibujar a Yogi Shape clip = g.getClip(); g.setClip(xIni, ALTO - SpriteYogi.ALTO, SpriteYogi.ANCHO, SpriteYogi.ALTO); g.drawImage(sprn.sprites, xIni - sprn.x, ALTO - SpriteYogi.ALTO, sprn.width, sprn.height, this); g.setClip(clip); Shape clip2 = g.getClip(); g.setClip(xComida, yComida, SpriteComida.LADO, SpriteComida.LADO); g.drawImage(sprc.sprites, xComida - sprc.x, yComida,sprc.width, sprc.height, this); g.setClip(clip2); // Liberar recursos g.dispose(); } Gracias |
||
|
![]() Miembro
|
No sé si el fallo estará en el método "dibuja"... asegúrate de que la variable "yComida" al empezar el juego vale 0, y si puedes, copia y pega el "run", que es posible que el fallo lo puedas tener por una de esas cosas. |
||
|
![]() Extranjero
|
He ido incrementando el juego y cuantas mas cosas pinto (ahora pinto las vidas también) mas tardan en salirme los objetos por primera vez. Aqui va el run: public void run() { while (true) { repaint(); if (yComida + 20 > ALTO - SpriteYogi.ALTO) if ((xComida + 10) > xIni && (xComida + 10) < (xIni + SpriteYogi.ANCHO)) { puntos++; yComida = 0; xComida = (int) (Math.random()*390); sprc.setFrame((int) (Math.random()*3)); } if (yComida + INC_MOV_COMIDA < ALTO) { yComida = yComida + INC_MOV_COMIDA; } // Si no quito vida. Y primero ver si la ha cogido yogui else { yComida = 0; vidas = vidas-1; xComida = (int) (Math.random()*390); sprc.setFrame((int) (Math.random()*3)); } //repaint(); try { Thread.currentThread().sleep(100); } catch (Exception e) {} } } |
||
|
![]() Miembro
|
Si es eso, prueba a poner un MediaTracker en cada imagen que cargues, tal y como se explica en el enunciado, para que no pase a hacer otra cosa hasta que no tenga la imagen cargada. En cualquier caso, se pide que el juego haga lo que dice, no que vaya rápido ![]() |
||
|
![]() Extranjero
|
Buenas, lo he puesto para que no arranque la animación hasta que se pulse un botón, y asà puedes esperar a que cargue todas las imagenes, etc. Tengo el mediatracker puesto en las imagenes, pero ¿se puede poner tambien para los sprites? Son estos los que tardan en aparecer. Lo voy a dejar asÃ, ya que no creo que sea cuestión de programación. Muchas gracias por todo. |
||
|
![]() Miembro
|
Se puede poner en los sprites, pero cuando cargues la imagen de dentro. Por ejemplo el SpriteYogi tiene un campo "Image" que es la imagen de los sprites. Cuando la inicialices en el constructor, le pones el mediatracker. Y lo mismo para las demás imágenes. |
||
|
[Versión imprimible] [Publicar nuevo tema] |