使用键盘暂停图像移动并再次启用

时间:2014-04-21 21:42:34

标签: java multithreading

我有一个名为animacionPacman的类,它具有用键盘移动pacman的关键事件。我想实现一个暂停方法,让pacman在按下空格键时等待,并在再次按下该键时继续。我尝试创建一个帖子,但我是java的新手。该程序没有错误,但pacman没有移动。 这是一些代码:

class MiThread extends Thread {
    private AnimacionPacman p;

    public MiThread(AnimacionPacman p) {
        this.p = p;
    }

    @Override
    public void run() {
        p.move();
    }
}

Public class Scenario extends JPanel implements ActionListener {
    private MiThread hilo;
    animacion = new AnimacionPacman();
    hilo = new MiThread(animacion);

    private class TAdapter extends KeyAdapter {
        public void keyReleased(KeyEvent e){
            animacion.keyReleased(e);
        }
    public void keyPressed(KeyEvent e) {
        int key = e.getKeyCode();
        hilo.start();         
        animacion.keyPressed(e);
    }
}

1 个答案:

答案 0 :(得分:0)

取决于你将如何实现这一点,但不要担心它非常简单!你有一个KeyAdapter,如果按下一个键,pac man会移动。你想覆盖(重新定义你的版本)KeyAdapter中一个名为keyReleased的方法,它停止了pac man。

我不会在代码中写出来,因为我认为自己试一试会给你带来好处,但你的两个选择是让一把钥匙(比如右箭头)让Pacman在按下时向右移动,并在停止时停止相同的键(右箭头)被释放。你的第二个选择是让右箭头向右移动Pacman右箭头keyPressed,但让空格键在keyPressed上阻止他。我自己的观点是,释放一个键可以更直观地阻止该角色,而不是让一个单独的键控制器停止启动另一个键。

这两种方法的共同点是需要一个stop()方法,就像你有一个move()方法一样。同样,取决于你如何移动角色的实现,但通常keyRelease()将导致移动速度设置为0.