10

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設定)がありますが、私はそれを望んでいません。それは一般的すぎます。

理想的には、特定のエラー/警告番号を抑制できます(警告#1090)。

編集:私はmxmlc -help advanced、有望に見える、より多くの「高度な」コンパイラフラグを見つけました。具体的には、次の候補のようです。
warn-deprecated-event-handler-error
warn-deprecated-function-error
warn-deprecated-property-error

Flashにこれらを使用させるにはどうすればよいですか?

編集2:Flashユーザーデータディレクトリにflex-info.xmlスタイルのドキュメントが見つかりました。
[userdatafolder]/Adobe/Flash CS4/en/Configuration/ActionScript 3.0/FlexInfo.xml ただし、このファイルには残念なコメントが含まれています:<!-- Flash does not support most flex-config options. -->、およびフラッシュを再起動した後でも私のディレクティブに応答しないようです。
これは悲しくなりつつあります。

編集3 : Adobeバグトラッカーで問題「誤った、迷惑な「移行の問題」の警告」を見つけました。Flex SDKの修正が確認されていますが、Flashについては言及されていません...

4

5 に答える 5

13

$ Flash / $ LOCALE / Configuration / Actionscript 3.0 / EnabledWarnings.xmlでEnabledWarnings.xmlを編集すると、可能になります。ここで、$ Flashはアプリケーション/プログラムファイルフォルダー内のFlashへのパスであり、$LOCALEは言語です

例えば

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

29行目を編集し、ID 1090の警告に対してenabled属性をfalseに設定する必要があります:

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

簡単な補足:

「FlashBuilder(CS4)」は紛らわしい用語です。Flex Builder 3の後、FlexBuilderはFlashBuilderに名前が変更され、FlashBuilderCS4はありません。通常のFlashIDEはFlashProfessional/ Flash Professional CS4として知られています。これは、Flash Catalyst、Flash Builder(以前はFlex Builder)、FlashProfessionalなどの類似した名前の製品間の混乱を避けるためでした。明らかに、それは常にそれほどうまくいくとは限りません:)

于 2010-04-10T02:00:24.063 に答える
3

呼び出される関数の名前をonMouseDownからhandlerOnMouseDownに変更するのはどうでしょうか。それは問題を解決しますか?

Flex Builderを使用していますか?
その場合は、[プロジェクト]->[プロパティ]->[Flexコンパイラ]に移動します。そこで、コンパイラに引数を追加できます。

于 2010-04-06T11:59:43.087 に答える
1

Flash Builderの問題フィルタリング機能を使用して、これらの警告を除外できます。

  • 開かれた問題ビュー
  • ドロップダウンメニューを開く小さな三角形を右クリックします
  • [コンテンツの構成...]を選択します。
  • 左側で、新しい構成を作成し、必要に応じて名前を付けます
  • 右側で設定を調整します。
    • スコープ:同じプロジェクト内の任意の要素(または必要なもの)
    • 説明:「移行の問題が含まれていない」を選択入力します(これにより、説明に移行の問題がある警告が除外されます)
    • 少なくともフレックスの問題を選択してください

左側で複数の構成を選択することにより、事前定義された構成とカスタム構成を組み合わせることができます。

于 2012-03-05T15:51:17.530 に答える
1

なぜそれをオーバーライドするのですか?そもそも存在しなかった。エラーメッセージは実際にあなたに何か有用なことを伝えています。それを抑制しないでください。

onMouseDownというイベントハンドラーを作成する場合は、次のようにしてみてください。

private function onMouseDown(e:MouseEvent) : void {
  // statements
}
于 2010-03-31T00:30:48.370 に答える
1

私は前の投稿に同意します。メッセージは、そのイベントハンドラーを登録する必要があることを通知しようとしています。onMouseDown()というメソッドを追加するだけでは、それはできません。あなたがする必要があるのは、次のようなものを追加することです

addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);

コンストラクターまたは親コンポーネントのいずれかで。

于 2010-04-01T19:43:08.757 に答える