Тема: [Cairngorm] проблема с cairngorm
Показать сообщение отдельно
Старый 14.03.2011, 10:43
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Посмотрите, не вызывается ли функция (выше по стеку) из каких-нибудь биндинг-выражений. Биндинги имеют два неприятных свойства - игнорировать ошибки и повторно вызывать функцию, если она завершилась с ошибкой в прошлый раз.

А вообще, за такой код надо из зарплаты вычитать
Код AS3:
override public function execute(event:CairngormEvent):void
		{
			var delegate : TargetValueDelegate = new TargetValueDelegate(this);
 targetValueEvent = event as TargetValueEvent;
			//try
			//{
				//targetValueEvent = TargetValueEvent(event);
				//nextEvent = targetValueEvent.nextChainedEvent;
			//}
			//catch(err:Error)
			//{
				//targetValueEvent=null;
			//}
 if (targetValueEvent)
			//if(targetValueEvent!=null)
			{
// Порочная логика, никогда так не делайте, подпишите по слушателю на событие, 
// либо используйте state, либо strategy. Старайтесь избегать switch, тем более, 
// что тут он совершенно ни к чему и только усложняет тестирование.
				myRequest = event.type;
				switch(event.type)
				{
					case TargetValueControl.LOAD_TARGET_VALUE:
						delegate.loadTargetValue();
						break;
					case TargetValueControl.ADD_TARGET_VALUE:
						delegate.addTargetValue(targetValueEvent.targetValueOb);
						break;
					case TargetValueControl.EDIT_TARGET_VALUE:
						delegate.editTargetValue(targetValueEvent.targetValueOb);
						break;
					case TargetValueControl.REMOVE_TARGET_VALUE:
						delegate.removeTargetValue(targetValueEvent.targetValueOb)
				}
			}
		}
__________________
Hell is the possibility of sanity