João, neste caso, creio que a saída é estender o ViewStack.
Aqui vai uma implementação que talvez resolva o seu problema. Chame-o,
por exemplo, de "MyViewStack" e use-o no lugar do ViewStack no seu
arquivo "viewstack_test.mxml". Se não for este exatamente o resultado
que você quer creio que seja um bom ponto de partida para você
encontrar a sua melhor solução.


package
{
        import mx.containers.ViewStack;
        import flash.display.DisplayObject;
        import mx.events.EffectEvent;

        public class MyViewStack extends ViewStack
        {

                private var tempSelectedIndex:int;
                private var childIsPlaying:Boolean;

                override public function 
addChild(child:DisplayObject):DisplayObject
                {
                        child.addEventListener(EffectEvent.EFFECT_START,
effectStartHandler);
                        child.addEventListener(EffectEvent.EFFECT_END, 
effectEndHandler);
                        return super.addChild(child);
                }

                private function effectStartHandler(event:EffectEvent):void
                {
                        childIsPlaying = true;
                }

                private function effectEndHandler(event:EffectEvent):void
                {
                        childIsPlaying = false;
                        selectedIndex = tempSelectedIndex;
                }

                override public function set selectedIndex(value:int):void
                {
                        tempSelectedIndex = value;
                        if (!childIsPlaying)
                        {
                                super.selectedIndex = value;
                        }
                }

        }
}


[]'s
Beck Novaes





On 23 abr, 07:35, João Saleiro <[EMAIL PROTECTED]> wrote:
> Eu sabia que ia perguntar isso :o)
> Por ordem de preferência:
>
> 1-Passar para a acção do ultimo botão clicado durante o efeito
> 2-Ignorar a acção do ultimo botao clicado, se estiver a meio da transição
> 3-Evitar que os botoes sejam clicaveis (este para mim é mesmo
> indesejável, é mesmo só em último caso...).
>
> A solução da primeira escolha é a solução actual em funcionamento no meu
> projecto, mas neste momento não estou a usar viewStack, mas um
> SectionController que criei.
>
> O problema é que o meu SectionController *criava* e *destruia* secções
> de acordo com as escolhas do utilizador (e se estivesse a meio de uma
> animação, quando essa termina, a nova secção é a que corresponde ao
> ultimo botao que foi clicado), o que originava aquele problema de
> memória (que no flexcoders foi reportado como um possível bug do flash).
>
> Devido a esse problema de memoria, cheguei à conclusão que mais vale ter
> todas as secções instanciadas (sao 8) e brincar somente com a
> visibilidade delas. E assim é escusado ter um componente meu (o
> SectionController) a fazer exactamente o mesmo que um viewstack.... com
> a excepção de que o viewstack interrompe as animações a meio!! :| :|
> Prefiro tentar resolver este problema das animações do viewstack e usar
> uma solução "aconselhada" para o flex, do que estar a alterar o meu
> SectionController de forma a fazer o mesmo que um viewstack, mas com
> essa pequena vantagem...
>
> []'s
>
> João Saleiro
>
> Beck Novaes wrote:
> > Mas o que você quer de fato? Quer que a animação termine para depois
> > ele passar para a ação do ultimo botão clicado? Quer ignorar a ação de
> > um botão enquanto houver transição? Quer evitar que o botão seja
> > "clicável" enquanto houver transição?
>
> > []'s
> > Beck novaes
>
> > On 23 abr, 06:52, João Saleiro <[EMAIL PROTECTED]> wrote:
>
> >> Antes de mais, o exemplo:
>
> >>http://www.riapt.org/opensource/viewstack_test2/viewstack_test.html(com
> >> view source enabled).
>
> >> A aplicação possui um viewStack com 3 componentes, e 3 botões para
> >> navegar entre eles. Cada componente possui um hideEffect e um showEffect
> >> (já devidamente a funcionar graças ao Beck). Porém, se clicarmos
> >> rapidamente nos botões para navegar entre componentes, ele interrompe as
> >> animações a meio, algo que para o meu caso específico é indesejável.
> >> Segundo a documentação:
>
> >> "The ViewStack or TabNavigator container waits for the |hideEffect| of
> >> the child container being hidden to complete before it reveals the new
> >> child container. You can interrupt a currently playing effect if you
> >> change the |selectedIndex| property of the ViewStack or TabNavigator
> >> container while an effect is playing."
>
> >> Não pretendo que este comportamento aconteça na minha aplicação. Existe
> >> alguma solução possível?
>
> >> Obrigado,
>
> >> João Saleiro


--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a