私は現在、独学専用のシンプルな 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
JComponent
リスナーについて少し読みましたが、今のところ必要なので、それを処理する方法がわかりません。
私の質問が今あることを考えると:
- これらのクラスについて悪い点はありますか?
Entity
これらのリスナーをクラスに追加するにはどうすればよいですか?
前もって感謝します。
編集:
あなたが言ったように、私はすべてのメソッドを追加しました。これで、2 つの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 ...
}
この時点でイベントを処理するにはどうすればよいですか? これは正しい方法ですか?私にはまったく手がかりがありません...上記のコードは直感的です。