Event handling: bessere Alternative als Reflection?
Übersicht

![]() |
DivineDominionBetreff: Event handling: bessere Alternative als Reflection? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe überlegt, ob ich direkt GameEvents mitsamt EventHandler usw. nutzen soll, weil es so viele Beispielprojekteim Internet tun.
Eigentlich hätte ich aber lieber etwas einfacheres. Da die aktuelle bmax-ng Version 0.99 noch keine enums unterstützt, stelle ich mir das mit den Event Namen auch nervig vor. In Ruby habe ich ein einfaches Pattern kennengelernt, bei dem man das Objekt fragt, ob es "on_something_did_change" implementiert. Wenn ja, wird der Callback aufgerufen. Das lässt sich in BlitzMax mit brl.reflection ja auch machen: BlitzMax: [AUSKLAPPEN]
Der Dispatcher nimmt dann String-basierte Events an und leitet die weiter, wenn registrierte Listener ein e Callback-Methode implementieren, die "On"+EventName heißt: Zu "PlayerDidWin" wird "OnPlayerDidWin()" aufgerufen. Beispiel: BlitzMax: [AUSKLAPPEN]
Man kann Arrays als Daten ("payload") übergeben, oder auch nix; und die konkreten Callback-Methoden können Daten ignorieren, wenn sie keine weiteren Parameter akzeptieren. Habt ihr so einen Event Handler selbst schon benutzt? Von der vergleichsweise schlechten Performance abgesehen (spielt für mich keine Rolle, weil die Listener nicht in jeder Frame der GameLoop Events bekommen), habt ihr andere Lösungen, die ihr lieber mögt? Warum? |
||
christian.tietze@gmail.com - https://christiantietze.de
macOS |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, ich hatte das hier mal gepostet, aber nutzt auch Reflection:
https://www.blitzforum.de/foru...hp?t=39969. Ist im Prinzip sehr ähnlich, wobei dein EventDispatcher eher schlanker und einfacher ist. Ich wollte nur als Alternative darauf hinweisen. Mit BlitzMax hat man ansonsten nicht viel mehr Möglichkeiten denke ich.. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group