在我目前正在制作的游戏中,我有三种不同的mousePressed
方法,一种用于单发,一种用于自动射击,一种用于近战攻击。因为用于自动射击的那个使用挥杆,所以我可以通过在其他方法中使用Timer
来覆盖它。mousePressed
timer.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
是近战法