Posso suspender desenho para executar várias atualizações sucessivas no Flex?

StackOverflow https://stackoverflow.com/questions/258182

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu escrevi um simples controle de calendário para permitir selecionar dias individuais, semanas, meses e assim por diante. A simplicidade vem do fato de que eu realmente não fazer qualquer eu desenho, optando por criar um monte de caixas e etiquetas para agir como células de data para o calendário.

Quando uma data ou um intervalo de datas for selecionado, preciso destacar nesse intervalo. É facilmente feito por iteração através das células e comutação seu estilo. [editar:] No entanto, este parece causar um atraso durante o qual as células são atraídos pela primeira vez como se o nome do estilo estava em branco, e em seguida, re-desenhado com o estilo correto, apesar do fato de que eu nunca definir explicitamente o estilo para null -. I alternam entre "CalendarCell" e "CalendarCellSelected"

Se este fosse o Windows Forms, eu chamaria SuspendLayout no recipiente pai para garantir que os controles são repintadas só depois que eu terminei as atualizações. O que estou procurando saber é se existe ou não uma solução semelhante para Flex. Eu gostaria de evitar chamar todo o calendário "manualmente", por assim dizer, se isso é possível.

edit:. mudou a descrição do problema para refletir com mais precisão o que estou vendo

Foi útil?

Solução

é o seu controle calendário de um UIComponent? É usando os métodos de invalidação padrão como commitProperties (), updateDisplayList (), etc?

O que você pode querer fazer é manter uma matriz privada das células que terão seus estilos mudado, mas em seguida, fazer a mudança de estilo real em seus commitProperties () override. Eu sou apenas não tenho certeza se setStyle () dispara um validateNow () porque a oscilação é um pouco surpreendente.

Outras dicas

Você está usando callLater () em tudo?

Se você usar callLater () pode impove seu visual, pois lotes até mudanças até que ele precisa para desenhar um quadro ou você forçar um empate quadro com validateNow () ou similar. Pode ser o suficiente no seu caso.

Isto pode não ser exatamente o que você está procurando, mas David Coletta a Adobe publicou um vídeo explicando um EventCoalescer que eles usam em Buzzword para adiar eventos que áreas atualização específicas da interface do usuário aplicativo até que o usuário parou de se mover o ponto de inserção no texto, por exemplo.

Este post por Hans Van de Velde também tem uma solução semelhante, e código real para ele também.

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