如何在flex中调试事件?

时间:2012-07-24 15:41:55

标签: flex debugging events

我是初次使用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>

您可以看到代码非常简单。

但是当我单击Label或Application时,似乎永远不会调用hello()方法。我尝试在调试模式下在trace("world")行添加一个断点,它从未被触发过。

由于作者很忙,而且我刚开始弯曲,我不知道如何调试这个问题。

  1. 有没有办法监听任何点击事件,并记录信息?
  2. 我应该阅读哪些有用的文件?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

我找到了Label方法中mouseEnabledfalse inited中设置override protected function init():void { super.init(); mouseEnabled = false; mouseChildren = false; } 的原因:

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

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

所以我们应该启用它:

{{1}}