Вот что я понимаю:
У вас есть разные инструменты. У каждого из инструментов есть список опций. Вы щелкаете опцию, и один обработчик событий должен выполнять некоторые действия в зависимости от опции.
object on the view 1 : n tools 1 : n options
Создайте пользовательское событие OptionEvent.SELECT
со свойством optionType
.
public class OptionEvent extends Event {
public static const SELECT : String = "optionEvent_select";
public var optionType : String;
public function OptionEvent(type : String) {
super(type, true); // bubbles
}
}
Когда пользователь выбирает опцию, отправьте событие следующим образом:
var event : OptionEvent = new OptionEvent(OptionEvent.SELECT);
event.optionType = "border";
dispatchEvent(event);
Слушайте событие, как вы:
var toolOptions:UIComponent=ToolOptions.createToolOptions(type);
if (options != null) {
options.addEventListener(OptionEvent.SELECT,toolOptionSelectedHandler);
someViewComponent.addOptions(toolOptions);
}
Различают тип опции, определяя тип опции:
private function toolOptionSelectedHandler(event : OptionEvent) : void {
var optionType = event.optionType;
switch (optionType) {
case "border":
addBorderToView();
break;
case "rotation":
rotateView();
break;
}
}
ОБНОВЛЕНИЕ - Как настроить список значений параметров в OptionEvent:
public class OptionEvent extends Event {
public static const SELECT : String = "optionEvent_select";
public var optionType : String;
private var _optionValues : Object;
public function OptionEvent(type : String) {
_optionValues = new Object();
super(type, true); // bubbles
}
public function setOptionValue(property : String, value : *) : void {
_optionValues[property] = value;
}
public function getOptionValue(property : String) : * {
return _optionValues[property];
}
}