我正在用 Java 编写一个游戏,这是我试图做得“漂亮”的第一个游戏。这款游戏名为 Bantumi - 这是一款棋盘游戏,现在我正在为动作编写动画。问题是,当运动动画运行时,板仍然会获取鼠标事件,如果用户选择新的运动,则正在运行的运动将被丢弃。
对于该板,我使用扩展 JLayeredPane 的类。这就是我的图层的方式:
第 0 层:带有种子的孔,因此用户选择一个进行移动,每个孔都是带有 MouseListener 的 JPanel。
第 1 层:标记当前选定孔的高亮显示
第 2 层:运动动画。
第 10 层:我编写的自定义通知系统类,它表示“轮到你了”、“重复轮到你”、“你赢了”等内容。
我想在动画运行时阻止任何层中所有可能的鼠标事件,我该怎么做?我认为在顶级播放器中添加一个覆盖整个区域的面板就足够了,但它不起作用。有什么解决办法吗?
对于(暂时)禁用来自 MouseListener (KeyListener ....) 的事件,您可以使用
public void consume()
Consumes this event so that it will not be processed in the
default manner by the source which originated it.
例如
whatever.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
if (somethingIsTrue) {
//do some stuff from mouse listener
} else {
e.consume();
}
}
.
.
.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)