我目前正在开发一个简单的 2d 游戏库,仅用于自学。直到知道一切都按预期工作。
现在我正在计划由“游戏流程”(例如计时器)或实体本身触发的运动和事件。我想知道是否可以有像“EntityEventListener”和“EntityMotionListener”这样的自定义事件。然后我看了一下 MouseListener 及其父类。然后我为每个侦听器编写了一个侦听器接口和一个适配器类,如下所示:
public interface AppEntityEventListener extends EventListener
{
void onCreated(Event e);
void onDeleted(Event e);
void onStepped(Event e);
void onSelected(Event e);
}
public abstract class AppEntityEventAdapter implements AppEntityEventListener
{
@Override public void onCreated(Event e) { }
@Override public void onDeleted(Event e) { }
@Override public void onStepped(Event e) { }
@Override public void onSelected(Event e) { }
}
我检测到我只能将侦听器添加到Components
并且Entity
该类不是Component
分别从 a 派生的JComponent
。
我读了一些关于 Listeners 的文章,但我不明白如何处理它,因为我现在需要它们。
考虑到我现在的问题是:
- 这些课程有什么不好的地方吗?
- 如何将这些听众以最好/最简单的方式添加到我的
Entity
班级?
提前致谢。
编辑:
我已经添加了你说的所有方法。所以现在我List
调用了两个对象eventListeners
,motionListeners
每个对象都有自己的添加和删除功能。
我有一个关于迭代的进一步问题,使用以下代码:
private void iterateListeners()
{
for (Object obj : eventListeners.toArray())
{
AppEntityEventListener l = (AppEntityEventListener) obj;
Event e = new Event(this, Event.ACTION_EVENT, this);
l.onCreated(e);
l.onDeleted(e);
l.onSelected(e);
l.onStepped(e);
}
// ... other listener ...
}
此时如何处理Event?这是正确的方法吗?我真的不知道……上面的代码很直观。