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();
}
}
}
});
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);
}
}
}