Как подавить предупреждения о миграции 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
Вы можете комбинировать предопределенные и настраиваемые конфигурации, выбрав более одного с левой стороны.