在我目前正在制作的游戏中,我有三种不同的mousePressed方法,一种用于单发,一种用于自动射击,一种用于近战攻击。因为用于自动射击的那个使用挥杆,所以我可以通过在其他方法中使用Timer来覆盖它。mousePressedtimer.stop();
但是单火直接mousePressed调用该fire()方法,因此我不能以任何方式从其他火中覆盖它mousePressed。下面的代码显示了开火的方法(子弹是 a ArrayList)。
public void fire(){
if(!power.getChainsaw()){
bullet.add(new Bullet(x, y));
}
}
当玩家获得近战武器时,我因此需要移除MouseListener单次射击。我已经尝试了下面的代码,但它没有工作。
removeMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
player.mousePressed2(e);
}
)};
MouseListener我以与此完全相同的方式添加单火和近战。这就是实际的mousePressed方法。公共无效mousePressed2(MouseEvent e){
if(SwingUtilities.isLeftMouseButton(e)){
timer.stop();
fire();
}
}
public void mousePressed3(MouseEvent e){
if(SwingUtilities.isLeftMouseButton(e)){
timer.stop();
}
}
mousePressed2是单火法,mousePressed3是近战法