2010-03-31 4 views
10

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

Я понимаю цель предупреждений, но они мне не полезны. Я хочу подавить эти предупреждения, но без, подавляя любые другие предупреждения, которые я обычно 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

Как получить флэш использовать их?

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

Редактировать 3: Найдены проблемы с "Erroneous, annoying "Migration issue" warnings" на отслежывателях Adobe. Исправление подтверждено для Flex SDK, но не упоминается Flash ...

+0

Какая IDE вы используете? – ALOToverflow

+0

Flash Builder (CS4), а не Flex, извините. Слишком легко! – aaaidan

ответ

13

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

например.

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

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

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

+0

Человек. Первый точный ответ до сих пор будет проверяться. – aaaidan

+0

Отлично. Это именно тот ответ, который я искал. Большое вам спасибо, Джордж, ты святой. Никакой каламбур. – aaaidan

+0

О, спасибо за прояснение этого материала о Flash Builder/Flash Professional. – aaaidan

1

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

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

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

Ах, дерьмо, спасибо, что указали это. Ключ override - это опечатка - я скопировал строку из подкласса. :/ – aaaidan

1

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

addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 

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

+0

Хм, возможно, мне нужно пояснить, что я добавил слушателя событий, и я все еще получаю предупреждение ... спасибо за комментарий. – aaaidan

3

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

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

+1

Да, это остановит предупреждения. Но это не успокоило мое больное сердце. Мне нравится «onMouseDown» больше, чем «onMouseDownHandler» или «onMouseDown2» и т. Д. – aaaidan

+0

И нет, используя Flash Builder (CS4). – aaaidan

1

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

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

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