Folgende Situation: Ich habe einen Context, den ich an mehrere Module hänge. Diese Module sind immer vom Typ AbstractStoryPage, aber manchmal auch vom Typ AbstractStoryLastPage. Im Context will ich nur für AbstractStoryLastPages einen Mediator mappen. Erste Experimente zeigen, dass ich nicht
1 |
mediatorMap.mapView( AbstractStoryLastPage, LastPageMediator ); |
aufrufen kann. Offenbar muss ich die konkrete Klasse nehmen, nicht eine Überklasse. Aber: Anders als der Methodenkopf
1 |
public function mapView(viewClassOrName:*, mediatorClass:Class, injectViewAs:* = null, autoCreate:Boolean = true, autoRemove:Boolean = true):void; |
nahe legt, kann ich dort nicht nur eine Klasse oder einen Namen übergeben, sondern auch eine Instanz. Und jeder Context hält die Instanz seines Views als DisplayObjectContainer contextView. Was also geht:
1 2 3 4 |
if( contextView is AbstractStoryLastPage ) { mediatorMap.mapView( contextView, LastPageMediator ); } |
Now you know. Verzweigungen im Context basierend auf der Überklasse des Views, aber ohne die konkreten Klassen mit reinkompilieren zu müssen.