【问题标题】:How to debug event in flex?如何调试flex中的事件?
【发布时间】:2012-07-24 15:41:54
【问题描述】:

我是 flex 的新手,使用小型开源 UI 库 ReCoral。在我的测试中,我使用它的Application 类作为mxml 的根,并且它有一个点击处理程序。

<?xml version="1.0" encoding="utf-8"?>
<common:Application
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:common="geb.common.*" width="500" height="500"
    xmlns:controls="geb.controls.*"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    click="hello()">

    <fx:Script>
        <![CDATA[
            private function hello(): void {
                trace("world");
            }
        ]]>
    </fx:Script>

    <controls:Label text="Click Me" height="100" width="100" click="hello()" />
</common:Application>

可以看到代码很简单。

但是当我单击标签或应用程序时,hello() 方法似乎从未被调用过。我尝试在调试模式下在trace("world") 行添加断点,它从未被触发。

由于作者比较忙,刚接触flex,不知道怎么调试这个问题。

  1. 有什么方法可以监听任何点击事件并记录信息?
  2. 有什么有用的文件我应该阅读吗?

【问题讨论】:

  • 不熟悉 RedCoral,但您用于添加侦听器的语法以及您所做的一切似乎都是正确的。尝试将 RedCoral 组件(&lt;common:Application /&gt;&lt;controls:Label /&gt;)替换为标准 Flex 组件(&lt;s:Application /&gt;&lt;s:Label /&gt;)。侦听器是否与 Flex 组件一起工作?
  • 看了一些RedCoral的源代码,发现它设置mouseEnabledfalse,所以我必须在Label中设置为true
  • 非常感谢。我想我应该尽快删除这个问题
  • 与其删除它,也许您可​​以添加您的答案......其他人可能会从中受益。设置mouseEnabled=false 是一个很好的优化,当您从没想过会使用鼠标事件时,但可能也会让其他 RedCoral 用户大吃一惊。
  • 如果您使用的是备用 UI 库,我不清楚为什么这个问题与 Flex 相关...

标签: apache-flex debugging events


【解决方案1】:

试试这个。需要添加事件类型

<?xml version="1.0" encoding="utf-8"?>
<common:Application
xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:common="geb.common.*" width="500" height="500"
xmlns:controls="geb.controls.*"
xmlns:mx="library://ns.adobe.com/flex/mx"
click="hello()">

<fx:Script>
    <![CDATA[
        private function hello(event:MouseEvent): void {
            trace("world");
        }
    ]]>
</fx:Script>

<controls:Label text="Click Me" height="100" width="100" click="hello(event)" />
</common:Application>

【讨论】:

    【解决方案2】:

    我找到了原因,RedCoral 中的Labelinited 方法中将mouseEnabled 设置为false

    override protected function init():void
    {
        super.init();
        mouseEnabled = false;
        mouseChildren = false;
    }
    

    见:https://github.com/xiaotie/RedCoral/blob/master/src/geb/controls/Label.as#L112

    所以我们应该启用它:

    <controls:Label text="Click Me" height="100" width="100" click="hello()" mouseEnabled="true" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 2010-10-03
      • 1970-01-01
      • 2023-03-13
      • 2011-05-09
      相关资源
      最近更新 更多