Queridos Señores...me gustaria saber como demonios van hacer para que Java reconosca las Librerias Dinamicas del Call Of Duty, detecte el numero de personas que haran War...porque esa seria la gracia del juego, que reconosca las personas que hara War y las Cargue y las deje conectadas y lista solo para logearse y jugar....bueno...si alquien sabe como hacer eso....nojoda me le quito el sombrero y lo respeto...porque una cosa es hacer las aplicaciones Con datagramas y socket que hacian en la universidad ah hacer que Java y La JVM trabajen de forma nativa con el Juego...recuerden que java solo trabaja con las Api de JDK y o con las de Windows (WinApi)...
Buenas laneros mi pregunta es la siguiente...
Estoy tratando de hacer una pequeña animación de una imagen, tengo varias imágenes que al cambiarlas dan la sensación de una animación... la cosa es que a la vez que voy cambiando la imagen necesito irlo moviendo también... lo que tengo es esto:
PHP:public void actionPerformed(ActionEvent e) { if ((i++ % 2) == 0) { jLabel1.setIcon(new ImageIcon(getClass().getResource("imagen1.png"))); } else { jLabel1.setIcon(new ImageIcon(getClass().getResource("imagen2.png"))); } jLabel1.setLocation(x++, y); }
lo coloque en el actionPerformed para que lo haga según un timer dado, ese no es el problema, la cosa es que si coloco la siguiente parte sola
PHP:if ((i++ % 2) == 0) { jLabel1.setIcon(new ImageIcon(getClass().getResource("imagen1.png"))); } else { jLabel1.setIcon(new ImageIcon(getClass().getResource("imagen2.png"))); }
me cambia fino la imagen, y si coloco la otra parte sola
PHP:jLabel1.setLocation(x++, y);
lo mueve fino por toda la pantalla.
Mi Problema esta en que cuando coloco las dos partes juntas como esta en el primer código, no lo mueve, solo cambia la imagen...
No entiendo que pasa, por que por separado funciona y juntos no???
De Verdad Agradezco su ayuda... Saludos =)
Alguna Idea???
Probaste a invertir el orden : digo, primero mover y luego hacer el cambio de imagen?Alguna Idea???
Volviendo a lo del thread..eso es un proceeso que s eejecuta en paralelo a la aplicacion matriz....el asunto de usar un thread es poder crear y controlar un ciclo infinito que se use para intercambiar las imagenes a aparte de usar el ando sleep para controlar la velocidad.
la verdad con google encontras muchos ejemplos sobre animaciones de este tipo...incluso juegos echos con es filosofia...bueno suerte.
Probaste a invertir el orden : digo, primero mover y luego hacer el cambio de imagen?
bueno primero que todo para hacer una animación lo mas recomendable es hacer un thread..pero sino puedes apelar a esto:
el problema con esto es que toca pincher el menú para cambiar de cuadro...además de que es una falsedad...te sugiero bro que uses un thread es lo mejor.
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class anim extends Canvas implements ActionListener {
private JFrame f = new JFrame("Prueba Animacion");
private Image img[] = new Image[2];
private int ima = 0, x = 0, y = 100, i=0;
private Timer timer = new Timer(10, this);
public static void main(String args[]) {
new anim();
}
public void actionPerformed(ActionEvent e) {
inc();
}
public anim() {
if(i == 0){
timer.start();
i++;
}
img[0] = Toolkit.getDefaultToolkit().getImage("img1.png");
img[1] = Toolkit.getDefaultToolkit().getImage("img2.png");
this.setBounds(0, 0, 800, 500);
this.setBackground(Color.white);
f.add(this);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ew){
System.exit(0);
}
});
f.setLayout(null);
f.setBounds(200, 200, 800, 500);
f.setVisible(true);
}
public void inc() {
if(ima < 1)
ima++;
else
ima = 0;
x++;
repaint();
}
public void paint(Graphics g) {
g.drawImage(img[ima], x, y, this);
}
}
Listo, ya lo logre, guiandome con lo que me colocaste lo adapte a lo que necesitaba =)
Ahora, hay alguna forma de poder extender de JFrame y de Canvas para no tener que hacer todo el formulario a pie? trabajo con netbeans y de verdad me fastidia tener que estar haciendo los formularios a mano teniendo ya una herramienta que me lo permite...
Si tienen alguna idea me avisan, Gracias, Saludos...
public void inc() {
if(ima < 1)
ima++;
else
ima = 0;
x++;
repaint();
}
public void paint(Graphics g) {
g.drawImage(img[ima], x, y, this);
}
g.drawImage(img[ima], x, y, this);
Como están muchachos, sigo yo con lo de la animación. Mi pregunta ahora es esta.
PHP:g.drawImage(img[ima], x, y, this);
cuando llama al this, hacia referencia al JFrame, ahora que esta en otra clase no hace nada... que debo colocar por el this para que me referencie al JFrame de la otra clase para que me permita hacer el repaint???
Gracias
Buenas Buenas.
Señores soy muy novato en Java me gustaria saber par cosas por ejemplo:......
Agradezco la atencion y colaboracion
Te recomiendo que usas la clase Graphics2D, eso como dije desde el principio lo mejor es que la clase de la animacion sea un thread es decir:
class Anim extends Thread
{
/*********************/
}
Con Graphics2D podes reemplazar el this por null sin problemas.
JDK = Java Development Kit
EL JDK es la librería que permite a nosotros los programadores generar código para ser utilizado en los ambientes de programación como el JCREATOR.
Lo que tienes que hacer es metermete en las opciones del JCreator y cambiarle su JDK por el que tienes instalado en tu equipo.
Normalmente puede estar en: C:/Archivos de Programa/JAVA
ó en: C:/JAVA
ok amigo lo que dices es cierto...PEROOOO....cuando hago correr el jcreator pongo setup jdk ya aparece el jdk y su documentacion(la carpeta docs que se encuentra en la carpeta de jdk)pero al final dice que hay un error en el path....PODRIAS RESPONDERME POR FAVOR
import java.awt.*;
import java.applet.Applet;
public class Animacion extends Applet implements Runnable {
Image imagenes[];
MediaTracker tracker;
int indice = 0;
Thread animacion;
int maxAncho,maxAlto;
Image offScrImage; // Componente off-screen para doble buffering
Graphics offScrGC;
// Nos indicará si ya se puede pintar
boolean cargado = false;
// Inicializamos el applet, establecemos su tamaño y
// cargamos las imágenes
public void init() {
// Establecemos el supervisor de imágenes
tracker = new MediaTracker( this );
// Fijamos el tamaño del applet
maxAncho = 100;
maxAlto = 100;
imagenes = new Image[36];
// Establecemos el doble buffer y dimensionamos el applet
try {
offScrImage = createImage( maxAncho,maxAlto );
offScrGC = offScrImage.getGraphics();
offScrGC.setColor( Color.lightGray );
offScrGC.fillRect( 0,0,maxAncho,maxAlto );
resize( maxAncho,maxAlto );
} catch( Exception e ) {
e.printStackTrace();
}
// Cargamos las imágenes en un array
for( int i=0; i < 36; i++ )
{
String fichero =
new String( "Tierra"+String.valueOf(i+1)+".gif" );
imagenes[i] = getImage( getDocumentBase(),fichero );
// Registramos las imágenes con el tracker
tracker.addImage( imagenes[i],i );
}
try {
// Utilizamos el tracker para comprobar que todas las
// imágenes están cargadas
tracker.waitForAll();
} catch( InterruptedException e ) {
;
}
cargado = true;
}
// Pintamos el fotograma que corresponda
public void paint( Graphics g ) {
if( cargado )
g.drawImage( offScrImage,0,0,this );
}
// Arrancamos y establecemos la primera imagen
public void start() {
if( tracker.checkID( indice ) )
offScrGC.drawImage( imagenes[indice],0,0,this );
animacion = new Thread( this );
animacion.start();
}
// Aquí hacemos el trabajo de animación
// Muestra una imagen, para, muestra la siguiente...
public void run() {
// Obtiene el identificador del thread
Thread thActual = Thread.currentThread();
// Nos aseguramos de que se ejecuta cuando estamos en un
// thread y además es el actual
while( animacion != null && animacion == thActual )
{
if( tracker.checkID( indice ) )
{
// Obtenemos la siguiente imagen
offScrGC.drawImage( imagenes[indice],0,0,this );
indice++;
// Volvemos al principio y seguimos, para el bucle
if( indice >= imagenes.length )
indice = 0;
}
// Ralentizamos la animación para que parezca normal
try {
animacion.sleep( 200 );
} catch( InterruptedException e ) {
;
}
// Pintamos el siguiente fotograma
repaint();
}
}
}