maneira correta no Flex para fazer uma respondem painel transparente para a rolagem () eventos
-
08-07-2019 - |
Pergunta
Eu tenho uma tela em um aplicativo Flex que tem itens dentro dela que cobrem apenas cerca de 50% da área da tela principal.
eu quero a tela para responder a eventos rollOver
para a área total, e não apenas a área que é coberta pelos itens dentro.
Eu tenho vindo a estabelecer os seguintes atributos para conseguir isso:
<mx:Canvas backgroundColor="white"
backgroundAlpha=".01"
rollOver="rollOver(event)">...
Isso faz com que a tela inteira para responder a eventos capotamento. Ele funciona muito bem - eu não estou feliz com isso e acho que deve haver uma melhor maneira de alcançá-lo.
Existe uma maneira de eventos de força do rato para atuar em toda a área de um UIComponent?
Solução
O que você está fazendo é perfeitamente aceitável, embora usando o valor alfa arbitrário de 0,01 é desnecessário, você pode configurá-lo de backgroundAlpha a um simples 0.
Eu rotineiramente usam telas para o multi complicado camadas UI e criar o meu estilo lona padrão via css para ter um backgroundAlpha 0 e um backgroundColor de #ffffff, então, se eu precisar de uma tela para ser realmente visível ajusto é backgroundAlpha indivíduo e as propriedades backgroundcolor.
Não há nada de errado com a configuração alfa de um objeto gráfico para 0 para que ele ainda responde a eventos, mas não foi 'desligado' por completo, nós como codificadores fazê-lo o tempo todo!
Outras dicas
E sobre ignorando seções de transparência de uma imagem? No meu caso eu gostaria que o roll over efeito ocorrer somente se a seção visível de uma imagem é rolou, não a parte transparente. Isso é possível?
Você pode fazer isso:
import flash.event.MouseEvent;
...
canvas.addEventListener(MouseEvent.ROLL_OVER,function(event:MouseEvent):void {
...
});
onde "tela" é o ID da tela em sua mxml.