1. debemos crear 4 paketes ó 4 carpetas (lo siento yo trabajo asi ) en los cuales las llamaremos model, controller,imagenes,y visual ahora nos paramos en el pakete model y creamos la clase animado el cual ponemos el siguiente codigo:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package model;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/**
*
* @author andres8822
*/
public class animado {
private JPanel panel=null;
Graphics g2=null;
public Thread hilo1=null;
public int x=0,y=0,posx=50,posy=200,img1=1;
ImageIcon image =new ImageIcon(new ImageIcon(getClass().getResource("/imagenes/puerta.gif")).getImage());
private boolean chocapuerta=false;
public animado(JPanel j){
panel=j;
x=getPanel().getWidth()-100;
y=getPanel().getHeight()-200;
System.out.println("tamaño puerta x"+x+"tamaño puerta y ="+y);
}
public void paint(Graphics g){
g2=g;
g.drawImage(image.getImage(), x, y,100, 150, null);
if(chocapuerta){
g.setColor(Color.red);
g.drawRect(posx-10, posy, 20, 300);
//
ImageIcon image2 =new ImageIcon(new ImageIcon(getClass().getResource("/imagenes/noentra/"+img1+".png")).getImage());
g.drawImage(image2.getImage(), posx, posy,400, 300, null);
img1++;
if(img1==8){
img1=1;
}
//
}
}
public void animacion(){
this.panel.getGraphics().drawLine(30, 30,45, 60);
if(!hilo2.isAlive()){
hilo2.start();
}
else{
hilo2.resume();
chocapuerta=true;
posx=50;
}
}
/**
* @return the chocapuerta
*/
public boolean isChocapuerta() {
return chocapuerta;
}
/**
* @param chocapuerta the chocapuerta to set
*/
public void setChocapuerta(boolean chocapuerta) {
this.chocapuerta = chocapuerta;
}
private Thread hilo2 = new Thread()
{
@Override
public void run()
{
try
{
while(true)
{
System.out.println("pos x"+posx);
/* ImageIcon image2 =new ImageIcon(new ImageIcon(getClass().getResource("/imagenes/noentra/"+img1+".png")).getImage());
panel.getGraphics().drawImage(image2.getImage(), posx, posy,400, 300, null);
*/
img1++;
if(img1==8){
img1=1;
}
if(posx==850){
hilo2.suspend();
}
panel.repaint();
posx+=10;
hilo2.sleep(100);
}
} catch (java.lang.InterruptedException ie) { System.out.println(ie.getMessage()); }
}
};
/**
* @return the panel
*/
public JPanel getPanel() {
return panel;
}
/**
* @param panel the panel to set
*/
public void setPanel(JPanel panel) {
this.panel = panel;
}
/**
* @return the hilo2
*/
public Thread getHilo2() {
return hilo2;
}
/**
* @param hilo2 the hilo2 to set
*/
public void setHilo2(Thread hilo2) {
this.hilo2 = hilo2;
}
}
luego dentro del pakete controller creamos la siguiente clase de nombre dibujartodo y ponemos el sigueinte codigo:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package controller;
import java.awt.Graphics;
import javax.swing.JComponent;
import javax.swing.JPanel;
import model.animado;
/**
*
* @author andres2288
*/
public class dibujartodo extends JComponent{
private animado anima;
public dibujartodo(JComponent contenedor,JPanel j){
super();
this.setBounds(0, 0,contenedor.getWidth() , contenedor.getHeight());
contenedor.add(this);
anima= new animado(j);
}
public void cuadraelpanel(JPanel t){
anima.setPanel(t);
}
public boolean llevarfalse(){
return anima.isChocapuerta();
}
public void animacion(){
anima.animacion();
}
public boolean isalivehilo(){
return anima.getHilo2().isAlive();
}
@Override
public void paint(Graphics g){
super.paint(g);
anima.paint(g);
}
public void animarchochapuerta(){
anima.setChocapuerta(true);
}
public void noanimarchochapuerta(){
anima.setChocapuerta(false);
}
}
luego en el pakete imagenes creamos otro pakete llamado noentra el cual la ruta quedara imagenes.noentraadentro del pakete imagenes no entra ponemos las siguientes imagenes la cual van a nombrar con extension .png y nombradas del 1 al 8 si no saben como cambiar las extensiones de todas imagenes a .png aqui les dejo un programa que hize en java para cambiar todas las extensiones al formato que quieran click aqui para el video y el link bueno y finalmete las imagenes:
finalmente creamos una clase en el pakete visual llamado vista el cual declaramos las variables siguientes en la parte de arriba al inicializar la clase:
private dibujartodo contenedor;
luego el constructor debe quedar de la siguiente manera:
public vista() {
super("by ANDRES2288");//"by por carlos andres buitrago ");
initComponents();
contenedor= new dibujartodo(panel1,panel1);
}
obviamente debemos crear un panel llamado ó de variable panel1 y creamos un boton y la damos la opcion que al darle click mande la animacion entonces dentro del codigo del boton ponemos el siguiente codigo:
contenedor.animarchochapuerta();
contenedor.animacion();
if(!hilo.isAlive()){
hilo.start();
}
else{
hilo.resume();
}
panel1.repaint();
y finalmente un hilo para poder actualizar el panel y paresca mas real
creo me falto el hilo en visual es este:
public Thread hilo = new Thread()
{
@Override
public void run()
{
try
{
while(true)
{
if(!contenedor.llevarfalse()){
hilo.suspend();
}
else{
// panel1.repaint();
}
System.out.println("holiiiiiiiiiiii");
hilo.sleep(200);
}
} catch (java.lang.InterruptedException ie) { System.out.println(ie.getMessage()); }
}
};
link del codigo a descargar se los dejo en el siguiente blog
http://andresfelipe2288.blogspot.com/2013/02/descargar-codigo-java-animacion-persona.html
4 Comments
lo hice todo al pie de la letra y no corre :(
ReplyDeletepara eso les deje el link de descarga :)
ReplyDeletecaballero, donde esta el link de descarga
ReplyDeleteHola Amigo.
ReplyDeleteGracias por el aporte, en esta página, en la información que aportas te faltan cosas para poder ejecutarlo debidamente y, además, no parece apenas ordenado. No sé si será culpa de ponerlo en el blog o qué. De todas maneras, gracias, a mi me ha servido por lo menos leer el código. voy a intentar arreglarlo para que funcione.
Saludos.
P.D: El link de descarga no funciona.