Может кто-нибудь объяснить мне эту распространенную ошибку?(используя неверное связываемое имя события) - PullRequest
3 голосов
/ 29 октября 2010

Я ссылаюсь на этот сайт текст ссылки

Использование неправильного имени события в [Bindable] тег может привести к приложение, чтобы не связывать вашу собственность, и ты даже не узнаешь почему. когда вы используете тег [Bindable] с пользовательское имя, пример ниже выглядит как хорошая идея:

public static const EVENT_CHANGED_CONST:String = "eventChangedConst"; 
private var _number:Number = 0; 
[Bindable(event=EVENT_CHANGED_CONST)] 
public function get number():Number 
{ 
  return _number; 
} 
public function set number(value:Number) : void 
{ 
  _number = value; 
  dispatchEvent(new Event(EVENT_CHANGED_CONST)); 
}

Код выше назначает статический Свойство к имени события, а затем использует то же назначение для отправки событие. Тем не менее, когда значение изменения, привязка не появляется работать. Причина в том, что событие имя будет EVENT_CHANGED_CONST и не значение переменной.

Код должен был быть написан как следует:

public static const EVENT_CHANGED_CONST:String = "eventChangedConst"; 
private var _number:Number = 0; 
[Bindable(event="eventChangedConst")] 
public function get number():Number 
{ 
  return _number; 
} 
public function set number(value:Number) : void 
{ 
  _number = value; 
  dispatchEvent(new Event(EVENT_CHANGED_CONST)); 
}

Я согласен, неправильный пример выглядит хорошей идеей, и я бы сделал это так, потому что я думаю, что это правильный путь и избегает возможности опечатки. Почему имя константы используется вместо ее значения? Конечно, это не может быть правдой?

Я ценю ваши идеи

1 Ответ

4 голосов
/ 29 октября 2010

Потому что стандартный компилятор Flex порой не такой умный ... и я чувствую твою боль!Я жаловался на эту проблему несколько раз.

Если я правильно помню, это потому, что компилятор делает несколько проходов.Один из ранних этапов превращает метаданные в код AS.На данный момент в компиляторе он не проанализировал остальную часть кода AS, поэтому он не способен анализировать константы или ссылки на статические переменные в других файлах.

Единственное, что я могу предложить, - это зарегистрироваться наAdobe JIRA, проголосуйте за ошибку и надеемся, что исправления компилятора в 4.5 принесут некоторое облегчение.

...