Pergunta

Eu estou trabalhando com um componente de lista personalizada em FLEX4. Eu criei um ItemRenderer personalizado e tudo parece e funciona como eu quero, mas eu estou tentando obter o evento de clique duplo. Estou recebendo tecla para baixo e todos os outros eventos, mas não esta. Eu já permitiu o duplo clique sobre o componente List

 doubleClickEnabled="true"

e eu adicionei um ouvinte de evento

ListEvent.ITEM_DOUBLE_CLICK

Eu posso clicar contanto que eu quero, o evento não é apenas acionado. Eu poderia usar algum conselho. Obrigado.

Foi útil?

Solução

Você quer ouvir MouseEvent.DOUBLE_CLICK e então você pode descobrir o que foi clicado usando event.target.

Outras dicas

Eu bati minha cabeça na parede por horas devido a esta! Adobe está indo para trás com a funcionalidade do componente! de qualquer maneira, eu encontrei uma solução decente:

Nós vamos adicionar o ouvinte de evento DOUBLE_CLICK ao DATAGROUP da lista, que é o contêiner dos itens:

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

Agora ele funciona agradável, não provocando um duplo clique do scroller, mas peitoril provocando um duplo clique de um espaço aberto (o próprio DATAGROUP) na lista onde não há itens. por isso só continuar o manipulador de eventos se e.target = DATAGROUP:

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

Agora, ele funciona muito bem :) ufa! Não devemos perder tempo com essas coisas ...


Bad solução -.> NÃO tentar comparar classe de e.target a classe da lista do itemRenderer, já que às vezes e.target é o rótulo real do item

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top