我有一些用于测试精灵的代码,我想用鼠标移动。单击屏幕时,精灵必须移动到单击的点。但是有些奇怪的事情正在发生。
我在一个名为Controls的线程中运行它,它扩展到Thread并实现MouseListener,并使用以下代码,sprite移动。
public void run() {
while(true){
if((int)point.getX() > player.getX()){
while((int)point.getX() > player.getX()){
player.moveX(1);
}
}
else{
System.out.println("Nah!");
}
}
}
一切都按预期工作,但如果我这样做:
public void run() {
while(true){
if((int)point.getX() > player.getX()){
while((int)point.getX() > player.getX()){
player.moveX(1);
}
}
}
}
它不起作用。如果我这样做:
public void run() {
while(true){
if((int)point.getX() > player.getX()){
while((int)point.getX() > player.getX()){
player.moveX(1);
}
}
else{
}
}
}
它也不起作用。我不知道发生了什么,有什么想法吗?
答案 0 :(得分:-2)
当您运行并行代码时,您应该给其他线程一些时间来完成他们的工作:
public void run() {
while(true){
if((int)point.getX() > player.getX()){
while((int)point.getX() > player.getX()){
player.moveX(1);
}
}
sleep(20 /* ms */);
}
}