2010-12-24 8 views
1

recently, stieß ich auf ein Problem, wo ich auf das List-Objekt von der benutzerdefinierten Cell-Renderer-Klasse der Liste zugreifen musste.ActionScript - Sollte Event Dispatching/Listening vermieden werden, wo immer möglich?

gab es 2 Möglichkeiten:

  1. anhören und lösen Sie ein benutzerdefiniertes Ereignis zwischen den zwei Klassen zu kommunizieren.
  2. verweisen auf die Liste aus der Zelle Renderer-Klasse mit der Eigenschaft parent: List (parent.parent.parent)

während es viel einfacher ist, die zweite Option zu wählen, ich das Gefühl, dass für einen Dispatching und Zuhören Ein benutzerdefiniertes Ereignis würde zu einem Code führen, der mehr mit dem Design von AVM2 in Verbindung steht, eine bessere Kontrolle für die Kommunikation bietet und, wie es erwartet wird, AS3 weniger schwierig zu debuggen oder in neuen Händen zu warten.

jedoch habe ich auch das Gefühl, dass die Verwendung eines Ereignisses teurer ist, erfordert Aufmerksamkeit für Ressourcen-Management vielleicht macht es schwieriger zu debuggen und zu pflegen und könnte im Allgemeinen Overkill sein.

ist das einfach eine Frage der Bedürfnisse oder des Geschmacks? sollte das Absenden/Abhören von benutzerdefinierten Ereignissen vermieden werden, wenn dies möglich ist?

+0

* während List (parent.parent.parent) funktioniert, habe ich vor kurzem festgestellt, dass der Zugriff auf das übergeordnete Element einfach mit List (listData.owner) aus der benutzerdefinierten Cell-Renderer-Klasse erreicht wird. – TheDarkIn1978

Antwort

1

Vergessen Sie nicht, dass Sie nicht die Kontrolle von Ereignis-Listener von einzelnen Blicke auf den Code fließen sehen kann.

Ich bin zwar nicht gegen Event-Listener, aber wenn Sie sie verwenden, sollten Sie versuchen, sie möglichst selbstdokumentierend und einfach zu verwenden. Wenn Sie clevere Dinge haben, wie das Hinzufügen/Entfernen von Ereignis-Listenern, und es schief geht, dann kann es ein Albtraum sein zu debuggen, weil Sie nicht sehen können, was dispatchEvent tun wird.

Wenn owner Sie das richtige Objekt bekommt, dann würde ich einfach damit gehen, mich selbst.

1

Ich würde es aus einem anderen Blickwinkel betrachten. Wenn die andere Option mehr Abhängigkeit zwischen den beiden Klassen schafft, würde ich mich definitiv für die Ereignisverteilung entscheiden.

In dieser Hinsicht bin ich nicht sicher, warum Sie denken, dass eine ereignisgesteuerte Anwendung wäre schwieriger zu debuggen & Wartung. Es scheint das Gegenteil zu sein, aber es hängt natürlich davon ab, wie man die Ereignisverteilung in der Anwendung implementiert. Aber wenn Sie das sagen und Ihre Frage noch einmal durchlesen, merke ich, dass Sie sich selbst widersprechen! Natürlich stimme ich der ersten Aussage zu.

...offers greater control for communication and, as it's expected AS3, 
should be less difficult to debug or maintain... 

...perhaps making it more difficult to debug and maintain and 
could be generally overkill. 
+0

lol. Ja, ich erkannte, dass ich dies über beide Optionen gesagt habe, als ich es geschrieben habe. Ich dachte, Ereignisse könnten schwieriger zu debuggen/zu warten sein, weil sie Ressourcenmanagement benötigen, während die Verwendung von Ereignissen schwieriger zu debuggen/zu warten ist, da es, wie Sie sagen, mehr Abhängigkeit zwischen den Klassen gibt. – TheDarkIn1978

Verwandte Themen