我正在写一个纸牌游戏。现在我在处理鼠标时遇到问题。下面是处理抓牌和弃牌游戏流程的计时器。
final Timer timer = new Timer(1000, null);
timer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
b.players[p].drawCard();
if(p==0) // player zero is the human player
{
timer.stop();
// ...
b.players[p].discardCard(i);
timer.start();
}
else
b.players[p].discardCard(0);
p=(p+1)%4;
b.repaint();
}
});
事情是我想停止计时器,等到用户点击他想要丢弃的卡片,然后再次启动计时器。 b
以基本方式实现 MouseListener
:
public void mouseClicked(MouseEvent arg0)
{
clickX = arg0.getX();
clickY = arg0.getY();
}
那里还有 xYtoCardIndex()
方法。
我在这里做什么?我假设我不必以非阻塞方式执行任何操作,对吗?
最佳答案
在伪代码中,在您的 MouseEventListener 中:
public void mouseClicked(MouseEvent arg0)
{
clickX = arg0.getX();
clickY = arg0.getY();
Card discarded = getCard(clickX,clickY);
b.players[p].discardCard(discarded);
// The card has been discarded, I can start my timer again.
timer.start();
}
在你的 drawCard 函数中:
public void drawCard() {
// Stop the timer
timer.stop();
// Do the drawing.
}
这样,当玩家抽到一张牌时,计时器会停止,直到牌被丢弃。
关于java - 停止 Swing 定时器直到用户点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4660187/