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).

有可以抑制动作脚本警告或所有警告的 flex 编译器 (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 :在 Adob​​e 错误跟踪器上发现一个问题“错误、烦人的“迁移问题”警告”。已确认 Flex SDK 已修复,但未提及 Flash……

4

5 回答 5

13

如果您编辑$Flash/$LOCALE/Configuration/Actionscript 3.0/ EnabledWarnings.xml中的 EnabledWarnings.xml,则可以,其中 $Flash 是 Applications/Program Files 文件夹中 Flash 的路径,$LOCALE 是您的语言。

例如

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

您需要编辑第 29 行,将enabled属性设置为false以发出id为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。显然它并不总是那么好:)

于 2010-04-10T02:00:24.063 回答
3

将被调用函数的名称从 onMouseDown 更改为 handlerOnMouseDown 怎么样?它会解决问题吗?

您在使用 Flex Builder 吗?
如果是这样,请转到项目 -> 属性 -> Flex 编译器。在那里,您可以向编译器添加参数。

于 2010-04-06T11:59:43.087 回答
1

我同意之前的帖子;该消息试图告诉您您需要注册该事件处理程序。仅仅添加一个名为 onMouseDown() 的方法是行不通的。你需要做的是添加类似的东西

addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);

在您的构造函数中或在父组件中。

于 2010-04-01T19:43:08.757 回答
1

你为什么要覆盖它?它从一开始就不存在。错误消息实际上是在告诉您一些有用的信息。不要压抑它。

如果您想创建一个名为 onMouseDown 的事件处理程序,请尝试类似

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

您可以使用 Flash Builder 的问题过滤功能过滤掉这些警告:

  • 打开问题视图
  • 右键单击打开下拉菜单的小三角形
  • 选择配置内容...
  • 在左侧,创建一个新配置,随意命名
  • 在右侧调整其设置:
    • 范围:在同一个项目中的任何元素(或任何你想要的)
    • 描述:选择不包含并输入迁移问题(这将过滤掉描述中存在迁移问题的警告)
    • 至少选择 Flex 问题

您可以通过在左侧选择多个来组合预定义和自定义配置。

于 2012-03-05T15:51:17.530 回答