bueno tengo problemas al detener un hilo, estuve leyendo y pues los 3 methodos que se usan para esto estan "Deprecated" entonces vi que la manera de detenerlos era con una variable en true que posteriormente se cambiaria a false y ya esta, ahora tengo el siguiente problema el hilo nos e detiene!!! =(
no entiendo por que es como si se crearan 2 instancias del hilo, por ke pongo a imprimir la variable dentro del ciclo y dentro del methodo que cambia la variable, ademas si entra por que el texto si se cambia a running ( lo entenderan al ver el codigo )
y cuando empieza pss el ciclo imprime true true... luego cuando llamo el methodo que la pone en false, se imprime que si cambio, pero dentro del cilco sigue apareciendo como true, como si fueran variables diferentes.
aqui dejo el codigo aver si alguien me puede ayudar:
Código PHP:
cont.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent e) {
if(e.getKeyCode()==112+getKeys().getSelectedIndex()){
HacerPoder hilo = new HacerPoder();
if(getRun().getText()=="Stopped"){
getRun().setText("Running");
hilo.setPoderes(nAbilities());
hilo.setMiembros(nMembers());
hilo.start();
}
else {
getRun().setText("Stopped");
hilo.pararAtacar();
}
}
}
});
el del hilo:
Código PHP:
import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Robot;
import java.awt.event.InputEvent;
public class HacerPoder extends Thread {
private boolean atacar = true;
public int miembros = 2;
public int poderes = 1;
public void setPoderes(int a) {
this.poderes = a;
}
public void setMiembros(int a) {
this.miembros = a;
}
public void pararAtacar() {
this.atacar = false;
System.out.println("si entro atakar:" + this.atacar);
}
public boolean getAtacar(){
System.out.println("wl get:" + this.atacar);
return this.atacar;
}
public void run() {
try {
Robot atk = new Robot();
int yIni = (int) MouseInfo.getPointerInfo().getLocation().getY();
int abilidad = 2;
int members = 1;
while (getAtacar()) {
System.out.println("en el ciclo:" + this.atacar);
atk.mousePress(InputEvent.BUTTON3_MASK);
atk.delay(1000);
atk.mouseRelease(InputEvent.BUTTON3_MASK);
atk.delay(300);
while (members < this.miembros) {
atk.mouseMove((int) MouseInfo.getPointerInfo()
.getLocation().getX(), (int) MouseInfo
.getPointerInfo().getLocation().getY() + 15);
atk.mousePress(InputEvent.BUTTON3_MASK);
atk.delay(1000);
atk.mouseRelease(InputEvent.BUTTON3_MASK);
atk.delay(300);
members++;
}
members = 1;
atk.mouseMove((int) MouseInfo.getPointerInfo().getLocation()
.getX(), yIni);
if (this.poderes != 1) {
cambiarPoder(abilidad);
abilidad++;
if (abilidad > this.poderes) {
abilidad = 1;
}
}
}
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void cambiarPoder(int abilidad) throws AWTException {
Robot atk = new Robot();
if (abilidad <= poderes) {
atk.keyPress(48 + abilidad);
atk.delay(300);
atk.keyRelease(48 + abilidad);
}
}
}