2

Flex4 でカスタム List コンポーネントを使用しています。カスタム ItemRenderer を作成しましたが、すべてが思い通りに機能しますが、ダブルクリック イベントを取得しようとしています。キーダウンと他のすべてのイベントを受信して​​いますが、これは受信していません。リストコンポーネントのダブルクリックを有効にしました

 doubleClickEnabled="true"

そして、私はイベントリスナーを追加しました

ListEvent.ITEM_DOUBLE_CLICK

好きなだけクリックできますが、イベントはトリガーされません。どんなアドバイスでも使えます。ありがとう。

4

2 に答える 2

5

リッスンしたいMouseEvent.DOUBLE_CLICK場合は、 を使用してクリックされたものを把握できますevent.target

于 2010-01-12T19:07:47.873 に答える
1

このため、私は何時間も頭を壁にぶつけました!アドビはコンポーネント機能で後退しています!とにかく、私はまともな解決策を見つけました:

DOUBLE_CLICK イベント リスナーを、項目のコンテナーであるリストの dataGroup に追加します。

list.dataGroup.doubleClickEnabled = true;   
list.dataGroup.addEventListener(MouseEvent.DOUBLE_CLICK, handleDoubleClick);

スクローラーからダブルクリックを誘発するのではなく、アイテムのないリスト内の空きスペース (dataGroup 自体) からダブルクリックを誘発するようになりました。そのため、e.target != dataGroup の場合にのみイベント ハンドラーを続行します。

private function handleDoubleClick(e:MouseEvent):void
{
  if (list.dataGroup != e.target)
  {
    // double click code
  }
}

今では正常に動作します:)ふー!こんなことで時間を無駄にしてはいけません...


悪い解決策 --> e.target のクラスをリストの itemRenderer のクラスと比較しようとしないでください。e.target がアイテムの実際のラベルである場合があるためです。

于 2011-11-18T13:49:34.020 に答える