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

В 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 или все предупреждения, но я не хочу этого. Это слишком общее.

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

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

Как использовать Flash для использования?

Изменить 2. Я нашел документ стиля flex-info.xml в каталоге Flash User Data.
[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...

Ответ 1

Вы можете, если вы отредактируете 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, установив атрибут включен false для предупреждения с идентификатором 1090

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

Быстрое оповещение:

"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. Очевидно, что это не всегда так хорошо работает:)

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);

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

Ответ 5

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

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

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