Adicionar efeitos a um componente personalizado flex
-
11-09-2019 - |
Pergunta
Eu tenho um aplicativo flex e eu quero adicionar um novo componente personalizado com script de ação em tempo de execução. Isso funciona bem. Eu criei meu componente personalizado e adicionado o seguinte código:
var freeView:FreeView=new FreeView();
freeView.setStyle("showEffect",this.fadeIn);
freeView.setStyle("hideEffect",this.fadeOut);
freeView.visible=false;
this.addChild(freeView);
freeView.visible=true;
Mas o meu problema é o fade in effecto não está funcionando. Eu sei que já declarou que o efeito corretamente porque se eu usá-lo em outro componente (como um painel) ele funciona muito bem. Alguém pode me ajudar com essa questão? Com os melhores cumprimentos!
Solução 2
Finalmente eu resolver o problema de uma maneira diferente. Em vez de adicionar o componente em tempo de execução Eu adicionei o componente para a aplicação com visível conjunto de propriedades como false e eu mudá-lo como verdadeiro quando eu preciso.
Outras dicas
Certifique-se de que você chamar qualquer Flex super-funções substituído em sua subclasse FreeView.
Especialmente updateDisplayList e commitProperties:
override protected function updateDisplayList(w:Number, h:Number)
{
super.updateDisplayList(w, h);
// Your code here.
}
override protected function commitProperties()
{
super.commitProperties();
// Your code here.
}
Você está substituindo uma das classes de contêineres de alto nível (por exemplo lona ou HBox) ou UIComponent?
Você pode fazê-lo o contrário, definindo-alvo efeitos para o seu novo elemento
<mx:Fade id="showFlag" alphaFrom="0" alphaTo="1" duration="5000"/>
var flag:Image = new Image;
flag.source = flagSource;
something.addElement(flag);
showFlag.target = flag;
showFlag.play();