Как подавить предупреждения о миграции Flash (1090)

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

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

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

/** @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).

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

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

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

как я могу получить Flash, чтобы использовать их?

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

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

5 ответов


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

например

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

вам нужно будет отредактировать строку 29, установив включено до false на предупреждение С id 1090:

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

быстрый sidenote:

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


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

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


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

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

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

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

addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);

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


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

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

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