0

我是 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. 我应该阅读任何有用的文件吗?
4

2 回答 2

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>
于 2012-07-26T07:11:28.043 回答
0

我找到了原因,Label在 RedCoral 中设置mouseEnabledfalseininited方法:

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" />
于 2012-07-25T09:28:46.963 回答