Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当没有按键时,使球停止移动?_Java_Applet - Fatal编程技术网

Java 当没有按键时,使球停止移动?

Java 当没有按键时,使球停止移动?,java,applet,Java,Applet,这是我的密码: public class Main extends Applet implements Runnable, KeyListener, java.awt.event.MouseListener { int x_pos = 300; int y_pos = 200; int radius = 20; int appletsize_x = 600; int appletsize_y = 400; double x_speed = 0; double y_speed = 0;

这是我的密码:

public class Main extends Applet implements Runnable, KeyListener,
    java.awt.event.MouseListener {
int x_pos = 300;
int y_pos = 200;
int radius = 20;
int appletsize_x = 600;
int appletsize_y = 400;
double x_speed = 0;
double y_speed = 0;

private Image dbImage;
private Graphics dbg;

public void init() {
    this.setSize(600, 400);

}

public void start() {

    this.addKeyListener(this);
    this.addMouseListener(this);
    Thread th = new Thread(this);
    th.start();
}

public void stop() {

}

public void destroy() {

}

public void run() {

    // lower ThreadPriority
    this.requestFocusInWindow();
    Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

    while (true) {

        repaint();
        x_pos += x_speed;
        y_pos += y_speed;

        // Hitting (right)
        if (x_pos > this.getSize().width - radius) {

            //x_speed = -x_speed;
            x_speed = 0;

        }
        // Hitting (left)
        if (x_pos < 0 + radius) {

            //x_speed = -x_speed;
            x_speed = 0;

        }
        // Hitting top
        if (y_pos < 0 + radius) {


            //y_speed = -y_speed;
            y_speed = 0;

        }

        // Hitting bottom
        if (y_pos > this.getSize().height - radius) {

            //y_speed = -y_speed;
            y_speed = 0;

        }

        try {
            // Stop thread for 1 milliseconds
            Thread.sleep(20);
        } catch (InterruptedException ex) {
            // do nothing
        }

        // set ThreadPriority to maximum value
        Thread.currentThread().setPriority(Thread.MAX_PRIORITY);

    }
}

public void paint(Graphics g) {
    // set colour
    g.setColor(Color.red);

    // paint a filled coloured circle
    g.fillOval(x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
}

public void update(Graphics g) {

    if (dbImage == null) {
        dbImage = createImage(this.getSize().width, this.getSize().height);
        dbg = dbImage.getGraphics();
    }

    dbg.setColor(getBackground());
    dbg.fillRect(0, 0, this.getSize().width, this.getSize().height);

    dbg.setColor(getForeground());
    paint(dbg);

    g.drawImage(dbImage, 0, 0, this);
}

@Override
public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_LEFT) {
        if (x_speed > 0) {
            x_speed = +x_speed;
            y_speed = 0;
        }
        if (x_speed == 0) {
            x_speed = -4;
            y_speed = 0;
        }
        if (x_speed < 0) {
            x_speed = +x_speed;
            y_speed = 0;
        }
    }
    if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
        if (x_speed < 0) {
            x_speed = -x_speed;
            y_speed = 0;

            if (x_speed > 0) {
                x_speed = -x_speed;
                y_speed = 0;
            }
        }
        if (x_speed == 0) {
            x_speed = 4;
            y_speed = 0;
        }

    }
    if (e.getKeyCode() == KeyEvent.VK_UP) {
        if (y_speed > 0) {
            y_speed = -y_speed;
            x_speed = 0;
        }
        if (y_speed < 0) {
            y_speed = +y_speed;
            x_speed = 0;
        }
        if (y_speed == 0) {
            y_speed = -4;
            x_speed = 0;
        }
    }
    if (e.getKeyCode() == KeyEvent.VK_DOWN) {
        if (y_speed > 0) {
            y_speed = +y_speed;
            x_speed = 0;
        }
        if (y_speed < 0) {
            y_speed = -y_speed;
            x_speed = 0;
        }
        if (y_speed == 0) {
            y_speed = +4;
        }
        x_speed = 0;
    }
}

@Override
public void keyReleased(KeyEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void keyTyped(KeyEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mouseClicked(MouseEvent e) {
    System.out.println("HIT!");
    // TODO Auto-generated method stub

}

@Override
public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub

}
         }

在没有按下按钮的情况下,如何使球停止移动?

在您的按键释放方法下,您应该能够执行与按键方法相反的操作。也就是说,如果您按下向右箭头键,将x_速度加1,当您松开它时,使用与其他键类似的逻辑,从x_速度中减去1。

在您的keyReleased方法下,您应该能够执行与按下键方法相反的操作。也就是说,如果你按下向右箭头键,将x_速度加上1,当你释放它时,使用与其他键类似的逻辑,从x_速度中减去1。

你能让x_速度和y_速度在键释放时等于0吗?

你能让x_速度和y_速度在键释放时等于0吗