Título: AffineTransform rotación y movimiento Publicado por: gelpack en 25 Abril 2013, 18:36 pm Hola,
estoy haciendo un intento de balon botando y rodando a la vez. He conseguido hacer que bote. Y mediante affineTransform he conseguido que gire. Pero no puedo hacer que hagan las dos cosas a la vez. Para hacerlo girar AffineTransform tx = AffineTransform.getRotateInstance(angulo*Math.PI/180,getWidth()/2,getHeight()/2); y para hacerlo botar vX=kxVelocidad; posX+=vX; vY += Gravedad; posY += vY; //++angulo; //golpear el suelo if(posY >= suelo && vY > 0) { posY = (int)(suelo); vY = -vY + balldegradation; } mediante graphics2d o pinta esto: g2d.drawImage(image,balon.getX(),balon.getY(), this); o pinta esto: g2d.drawImage(image,tx, this); a ver quién me puede decir cómo funciona realmente affinetransform, porque le doy mil vueltas, y busco en internet, y no logro que haga lo que necesito. gracias!! Título: Re: AffineTransform rotación y movimiento Publicado por: crozz2 en 24 Mayo 2013, 04:07 am Mira el problema es que AffineTransform mueve todo el sistema de coordenadas, por lo tanto cuando intentas mover hacia abajo (o a cualquier lado) y girar al mismo tiempo lo que logras es que se mueva hacia hacia abajo pero rota, me explico, si tu giras 90grados e intentas mover hacia abajo se moverá hacia la izquierda.
Mi recomendación es que dibujes el balón girando dentro de un control: public class Balon extends JComponent{ public void paint(Graphics g){ //dibujar balón girando } } y que después lo añadas en el JFrame: this.add(new Balon()); obviamente puedes configurar el balón antes de agregarlo. Después puedes encargarle a un hilo que mueva el balón (el control) tal y como si fuera un botón o cualquier otro control de swing. Espero te sea de ayuda (yo también sufrí ese cambio en el eje de coordenadas jaja por eso lo se). http://javatap1.blogspot.mx/ |