我目前正在编写类似于brick breaker的游戏,需要知道如何让我的程序等待调用特定函数。
我需要暂停程序,直到按钮之间做出决定。例如,游戏启动,并且用户可以选择他在游戏中想要的颜色。因此,游戏暂停直到他的选择已经完成并且他很高兴然后该程序需要恢复到不同的阶段。
答案 0 :(得分:9)
如果您正在使用Swing组件,则可以向该按钮添加ActionListener
并包含需要在被覆盖的actionPerformed
方法中执行的逻辑。
另见How to Write an Action Listener。
我需要暂停程序,直到做出决定 纽扣。例如,游戏启动,并给用户一个 选择他在比赛中想要的颜色。因此,游戏暂停 直到他的选择已经完成,并且他对该计划感到高兴 需要恢复到不同的阶段。
有几种方法可以解决这个问题,但我不打算深入研究这里并发编程的复杂性;你可以找到其他资源。话虽如此,我想提出的一个意见是你既不应该执行长时间运行的任务,也不应该在事件调度线程(EDT)中睡觉,因为这样做会导致UI无响应(即“冻结”)。
答案 1 :(得分:3)
我需要暂停程序..
对于像破砖者这样的游戏,你通常会有一个动画循环。在按下按钮时,按照用户132的建议行事。对于当发生这种情况时要执行的操作,这取决于代码如何组织到首先循环。
E.G。 Swing Timer
,这是一种简单的循环方式。在GUI中暂停渲染 - 它提供了start()
和...之类的方法。 stop()
。如果您有多个计时器在运行(例如,一个用于渲染循环,另一个用于该级别的“倒计时计时器”),您显然需要暂停它们。
使用SSCCE当前代码可能会有更多详细信息。
答案 2 :(得分:1)
您正处于GUI编程领域,主要使用事件(事件驱动)
在某种程度上你提出了错误的问题。
在活动系统中,您始终在等待。当某些事件发生时,您继续工作。
在您的情况下,您应该考虑按下按钮时该怎么做。
答案 3 :(得分:1)
以下是您需要的结构类型的基本概要。
import java.swing.*
public class Breaker
{
private
Listener listener;
JButton b1;
public Breaker()
{
listener = new Listener();
b1 = new JButton("b1");
b1.addActionListener(listener);
}
class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
Component theEventer = (Component) e.getSource();
if (theEventer == b1)
{
You're stuff here
}
}
public static void main (String[] args)
{
new Breaker();
}
}