Как подавить предупреждения о миграции Flash (1090) - PullRequest
10 голосов
/ 31 марта 2010

В Flash Professional CS4 я получаю предупреждения о «проблеме миграции», когда использую имена обработчиков ввода мыши / клавиатуры, такие как onMouseDown, onKeyUp и т. Д., Хотя я добавил для них прослушиватели событий. Эти имена совершенно допустимы для функций, но, поскольку они были автоматически запущены в ActionScript 2.0, мы теперь (хотя и разумно) предупреждены, что их использование больше не является автоматическим в AS3.

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

Например, когда я использую такой код:

/** @constructor */
public function MyClass() {
  addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}

protected function onMouseDown(e:MouseEvent):void {

Я получаю досадное предупреждение:

Warning: 1090: Migration issue: The onMouseDown event handler is not triggered automatically by Flash Player at run time in ActionScript 3.0. You must first register this handler for the event using addEventListener ( 'mouseDown', callback_handler).

Существуют флаги гибкого компилятора (mxmlc) (и настройки Flash Pro), которые могут подавлять предупреждения ActionScript или все предупреждения, но я этого не хочу. Это слишком общее.

В идеале я мог бы подавить конкретную ошибку / номер предупреждения (Warning # 1090).

Редактировать : Я нашел более «продвинутые» флаги компилятора с mxmlc -help advanced, которые выглядят многообещающими. В частности, следующие вероятные кандидаты выглядят следующим образом:
warn-deprecated-event-handler-error
warn-deprecated-function-error
warn-deprecated-property-error

Как мне заставить Flash использовать их?

Редактировать 2 : я нашел документ в стиле flex-info.xml в каталоге данных пользователя Flash.
[userdatafolder]/Adobe/Flash CS4/en/Configuration/ActionScript 3.0/FlexInfo.xml Однако этот файл содержит неутешительный комментарий: <!-- Flash does not support most flex-config options. --> и, похоже, не отвечает на мои директивы даже после перезапуска flash.
Это становится грустным.

Редактировать 3 : Обнаружена ошибка " Ошибочные, раздражающие предупреждения" Проблема миграции "" в трекере ошибок Adobe. Исправление для Flex SDK подтверждено, но не упоминается Flash ...

Ответы [ 5 ]

13 голосов
/ 10 апреля 2010

Вы можете редактировать EnabledWarnings.xml в $ Flash / $ LOCALE / Configuration / Actionscript 3.0 / EnabledWarnings.xml, где $ Flash - это путь к Flash внутри вашей папки Applications / Program Files и $ LOCALE - твой язык.

, например

/Applications/Adobe Flash CS4/en/Configuration/ActionScript 3.0/EnabledWarnings.xml

Вам нужно будет отредактировать строку 29, установив для enabled атрибут false для предупреждение с идентификатором 1090 :

<warning id="1090" enabled="false"  label="kWarning_DepricatedEventHandlerError">EventHandler was not added as a listener.</warning>

Быстрый sidenote:

«Flash Builder (CS4)» - запутанный термин. После Flex Builder 3 Flex Builder был переименован в Flash Builder, Flash Builder CS4 отсутствует. Обычная Flash IDE известна как Flash Professional / Flash Professional CS4, чтобы избежать путаницы между продуктами с похожими названиями: Flash Catalyst, Flash Builder (был Flex Builder), Flash Professional. Очевидно, это не всегда работает так здорово:)

3 голосов
/ 06 апреля 2010

Как насчет изменения имени вызываемой функции с onMouseDown на handlerOnMouseDown. Решит ли это проблему?

Используете ли вы Flex Builder?
Если это так, перейдите в Project -> Properties -> Flex Compiler. Там вы можете добавить аргументы в компилятор.

1 голос
/ 05 марта 2012

Вы можете отфильтровать эти предупреждения с помощью функции фильтрации проблем Flash Builder:

  • открыть вид проблем
  • щелкните правой кнопкой мыши маленький треугольник, который открывает раскрывающееся меню
  • выберите Настроить содержимое ...
  • слева, создайте новую конфигурацию, назовите ее как хотите
  • справа отрегулируйте его настройки:
    • Область действия: Для любого элемента в том же проекте (или для чего угодно)
    • Описание: выберите , не содержит и введите Проблема миграции (это отфильтровывает предупреждения с проблемой миграции в описание)
    • выбирайте хотя бы проблемы Flex

Вы можете комбинировать предварительно определенные и пользовательские конфигурации, выбрав более одной на левой стороне.

1 голос
/ 01 апреля 2010

согласен с предыдущим постом; сообщение пытается сообщить вам, что вам нужно зарегистрировать этот обработчик событий. Просто добавление метода onMouseDown () не сделает этого. Что вам нужно сделать, это добавить что-то вроде

addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);

в вашем конструкторе или, возможно, в родительском компоненте.

1 голос
/ 31 марта 2010

Почему ты это отвергаешь? Это никогда не существовало в первую очередь. Сообщение об ошибке на самом деле говорит вам что-то полезное. Не подавляйте это.

Если вы хотите создать обработчик событий с именем onMouseDown, попробуйте что-то вроде

private function onMouseDown(e:MouseEvent) : void {
  // statements
}
...