В Профессионале Flash 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 в Пользовательском dir Данных Flash.[userdatafolder]/Adobe/Flash CS4/en/Configuration/ActionScript 3.0/FlexInfo.xml
Однако этот файл содержит неутешительный комментарий: , и, кажется, не отвечает на мои директивы даже после перезапуска флэш-памяти.
Это становится печальным.
Редактирование 3: Найденный проблемой "Ошибочная, раздражающая "Миграция выдает" предупреждения" на средстве отслеживания ошибки Adobe. Фиксация подтверждена для Flex SDK, но никакое упоминание о Flash...
Можно, отредактировав EnabledWarnings.xml в $ Flash / $ LOCALE / Configuration / Actionscript 3.0 / EnabledWarnings.xml, где $ Flash - это путь к Flash внутри папки Applications / Program Files, а $ LOCALE - это ваш язык.
например.
/ Applications / Adobe Flash CS4 / ru / 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>
Небольшое примечание:
«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. Очевидно, это не всегда так хорошо работает :)
Почему вы игнорируете это? Во-первых, его никогда не существовало. Сообщение об ошибке на самом деле сообщает вам кое-что полезное. Не подавляйте это.
Если вы хотите создать обработчик событий onMouseDown, попробуйте что-нибудь вроде
private function onMouseDown(e:MouseEvent) : void {
// statements
}
Я согласен с предыдущим сообщением; сообщение пытается сообщить вам, что вам необходимо зарегистрировать этот обработчик событий. Простое добавление метода onMouseDown () этого не сделает. Что вам нужно сделать, так это добавить что-то вроде
addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
либо в ваш конструктор, либо, возможно, в родительский компонент.
А как насчет изменение имени вызываемой функции с onMouseDown на handlerOnMouseDown. Решит ли это проблему?
Вы используете Flex Builder?
Если да, перейдите в Проект -> Свойства -> Компилятор Flex. Там вы можете добавить аргументы в компилятор.