0

私はフレックスが初めてで、小さなオープンソースの 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

LabelRedCoralで inメソッドに設定mouseEnabledされている理由を見つけました。falseinited

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 に答える