java - Java 中的事件调度程序

标签 java events event-handling

我需要为学校制作一个简单的“战略游戏模拟器”。为此,我需要制作一个事件调度程序(事件循环),它将事件发送给注册方。比如我在 map 上有资源。一个事件是“位置 1 的资源耗尽”。一个“玩家”对该事件感兴趣。 我将如何创建调度员(并为一个特定事件注册一个玩家)。另外,调度程序如何检查事件?它只是简单地执行类似 if(resourceLocation1.getNoResource()==0) trigerEvent(); 的操作,还是有其他更优雅的方法。

我使用事件监听器(主要是在 ActionScrip3 中),但从未制作过自定义事件和自定义事件调度程序。感谢您提供任何帮助,包括指向某些教程或示例代码的一些链接。

如果我不清楚我在搜索什么,请告诉我,我会尽力解释得更好

谢谢。

最佳答案

您的 EventDispatcher 不需要检查每个可能的条件并通知所有可能的监听器。只需通知为某种类型的事件注册的监听器。

注册 Player 以根据游戏事件得到通知

eventDispatcher.register(player, Events.RESOURCE_DEPLETION_EVENT);

然后你的Resource会在资源达到0时提供一个事件

class Resource {
    public void deplete(int amount) {
         this.amount -= amount;
         if (this.amount <= 0)
             eventDispatcher.notify(this, Events.RESOURCE_DEPLETION_EVENT);
    }
 }

否则,您将以大量包含逻辑的事件循环结束,这会消耗性能并且难以调试。

关于java - Java 中的事件调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202383/

相关文章:

java - 处理 Java 按键事件

C# 如何在按住鼠标按钮时循环

javascript - Puppeteer:有什么方法可以获取 page.on() 的所有事件监听器吗?

swift - 在 Swift for OSX 的子类中管理事件处理

javascript - 在 Backbone.js 的事件处理程序中获取对原始对象的引用

c++ - 如何将 C++ (Visual Studio 2010) 链接到图像输出事件监听器?

java - 泛型集合 PECS

java - 当应用程序处于后台时 Thread.sleep 速度变慢

java - 从 MySQL 5.5 升级到 5.6 并获取 "SQLException: Connection is closed"

java - 新的 Spring Starter 项目 - pom 错误