Efeitos de transicao de States!!

4 views
Skip to first unread message

Eder

unread,
Jun 25, 2007, 7:41:07 AM6/25/07
to flexdev
Bom dia galera!
Estou com uma duvida em relação a mudanças de state com efeito !
na verdade nao sei como se faz tenho visto exemplos sobre efeitos mas
o que eu quero nao sei fazer !!

vai o meu codigo!


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute">
<mx:states>
<mx:State name="State1">
<mx:AddChild position="lastChild">
<mx:Canvas x="174" y="81" width="356" height="299"
borderStyle="solid" id="c1">
<mx:Panel x="53" y="47" width="250" height="200"
layout="absolute" title="state1" id="s1">
</mx:Panel>
</mx:Canvas>
</mx:AddChild>
</mx:State>
<mx:State name="State2">
<mx:AddChild position="lastChild">
<mx:Canvas x="174" y="81" width="356" height="299"
borderStyle="solid" id="c2">
<mx:Panel x="53" y="47" width="250" height="200"
layout="absolute" title="state2" id="s2">
</mx:Panel>
</mx:Canvas>
</mx:AddChild>
</mx:State>
<mx:State name="State3">
<mx:AddChild position="lastChild">
<mx:Canvas x="174" y="81" width="356" height="299"
borderStyle="solid" id="c3">
<mx:Panel x="53" y="47" width="250" height="200"
layout="absolute" title="state3" id="s3">
</mx:Panel>
</mx:Canvas>
</mx:AddChild>
</mx:State>
<mx:State name="State4">
<mx:AddChild position="lastChild">
<mx:Canvas x="174" y="81" width="356" height="299"
borderStyle="solid" id="c4">
<mx:Panel x="53" y="47" width="250" height="200"
layout="absolute" title="state4" id="s4">
</mx:Panel>
</mx:Canvas>
</mx:AddChild>
</mx:State>
</mx:states>


<mx:ToggleButtonBar horizontalGap="5" x="59" y="10"
itemClick="changeMenu(event)" width="570" height="29"
color="#ffffff" id="State3">
<mx:dataProvider>
<mx:Array>
<mx:String>State1</mx:String>
<mx:String>State2</mx:String>
<mx:String>State3</mx:String>
<mx:String>State4</mx:String>
</mx:Array>
</mx:dataProvider>
</mx:ToggleButtonBar>


<mx:Parallel id="efeitoc2" target="{c2}">
<mx:Fade alphaTo="0"/>
</mx:Parallel>


<mx:Script>
<![CDATA[
import mx.effects.easing.Bounce;
import mx.events.ItemClickEvent;
private function changeMenu(event:ItemClickEvent):void
{
if(event.label == 'State1')
{

currentState="State1";
}
if(event.label == 'State2')
{
efeitoc2.play();

currentState="State2";
}
if(event.label == 'State3')
{
currentState="State3";
}
if(event.label == 'State4')
{
currentState="State4";
}
}
]]>
</mx:Script>
</mx:Application>

o que estou querendo e ter um efeito de aparecer e desaparecer o state
ao se apertar o botao!
tipo apertar o state 1 se tiver no state 2 ele mudar para o state 1
desaparecendo o 2 e aparecendo o 1 ! com o efeito <mx:Fade> !
bem pode ser facil mas preciso muito aprender a trabalhar com efeitos
e estou com muitas duvidas!
quem puder me ajudar fico grato!

tenham um otimo dia

Beck Novaes

unread,
Jun 25, 2007, 8:31:06 AM6/25/07
to flexdev
Que tal fazer assim?

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

layout="vertical">

<mx:ToggleButtonBar dataProvider="{vs}"/>

<mx:ViewStack id="vs">

<mx:Panel title="State 1" label="State 1"
width="300" height="300"
showEffect="Fade" hideEffect="Fade">
</mx:Panel>

<mx:Panel title="State 2" label="State 2"
width="300" height="300"
showEffect="Fade" hideEffect="Fade">
</mx:Panel>

<mx:Panel title="State 3" label="State 3"
width="300" height="300"
showEffect="Fade" hideEffect="Fade">
</mx:Panel>

<mx:Panel title="State 4" label="State 4"
width="300" height="300"
showEffect="Fade" hideEffect="Fade">
</mx:Panel>

</mx:ViewStack>

</mx:Application>

Se for isto mesmo que você quer creio que esta seja uma boa solução.

Eu vejo muito as pessoas, inclusive pessoas que se dizem experientes
em Flex, usarem states sem necessidade. Esta utilização indiscriminada
dos states só leva a uma coisa: código ilegível.

O MXML só existe por questões de legibilidade. É melhor usar um XML
para definir uma interface do que uma linguagem de programação como o
ActionScript. No entanto, é terrível analisar o MXML de uma interface
que contem states. Ou seja, ao fazer assim estamos anulando o que há
de melhor o MXML que é a simplicidade e legibilidade.

Eu estou ficando tão cético com relação ao uso de states no Flex que
quando vejo algo com states o alarme logo dispara: BAD SMELL!

[]'s
Beck Novaes

Andrey Wischneski

unread,
Jun 25, 2007, 8:39:44 AM6/25/07
to fle...@googlegroups.com
Também não utilizo states, mas este código vai te ajudar se você resolver fazer com states mesmo...

Utilize o mx:transitions, pelo menos foi desta maneira que eu fiz no meu exemplo:

<mx:transitions>
       <mx:Transition id="transicao" fromState="*" toState="*">
            <mx:Fade target="{alvo}"/>
       </mx:Transition>
</mx:transitions>

Eder

unread,
Jun 25, 2007, 9:01:01 AM6/25/07
to flexdev
beleza galera!
eu estou usando states porque na minha app tem niveis de acesso e
achei mais facil usando states!
mas com o tempo irei obtendo espereriencia e eliminar os "Bad Smells"
vou refatorar e ver o que eu faço!

valeu mesmo !

Beck Novaes

unread,
Jun 25, 2007, 9:07:51 AM6/25/07
to flexdev
no problem, Eder! Você não quer parecer que é um "Guru do Flex". Está
apenas pedindo um auxílio. A minha crítica é com relação as pessoas
que se dizem experts e não sabem usar os states.

[]'s
Beck novaes

Eder

unread,
Jun 25, 2007, 9:12:39 AM6/25/07
to flexdev
beleza Beck!

Sempre aprecio muito sua ajuda e seguindo bons conselhos ajudara
melhor meu desenvolvimento!

valeu !!

Arleston Lueders

unread,
Sep 28, 2007, 1:09:57 AM9/28/07
to fle...@googlegroups.com
Falando então do "bad smell"...
Eu tava justo fazendo uma aplicaçãozinha com States quando li esse email, hehehe.
Achei legal pq vc faz um link aí só muda a State no onclick currentState='state2' e assim por diante.
Então minha pergunta seria... como que faço agora sem State?
Por exemplo: tenho um panel principal e quero chamar outros Panels via linkButton. Fazer com popUp?
Chama funções que abrem outra tela?
Qual seria a maneira "correta"?
Obrigado desde já! :)

Beck Novaes

unread,
Sep 28, 2007, 7:11:53 AM9/28/07
to flexdev
Olá Arleston,

Esta é uma pergunta para o Eder ou para mim?

[]'s
Beck Novaes

On 28 set, 02:09, "Arleston Lueders" <arleston.lis...@gmail.com>
wrote:

Arleston Lueders

unread,
Sep 28, 2007, 11:25:13 AM9/28/07
to fle...@googlegroups.com
Opa Beck, para você.
Quero começar fazendo pelo caminho certo. :)
[]s
Arleston

Beck Novaes

unread,
Sep 28, 2007, 11:49:06 AM9/28/07
to flexdev
Bem, como eu disse em outras oportunidades, trabalhar com States é
mais fácil. Porém, tentar utilizar ao máximo os Containers e
Navigators deixa o seu código mais simples de entender e modificar. O
problema é que pode demorar um pouquinho até adquirir proficiência em
como usar estes componentes. Eu não consigo pensar numa "Receita de
Bolo" para isso.

Eu uso bastante o ViewStack, que é quase sempre a minha primeira opção
para alternar entre as Views (acho este nome mais propício do que
Telas ou páginas). Você mencionou o LinkButton, e se este for mesmo o
caso não haverá problema em usar o ViewStack (desde que não se altere
o "creationPolicy" para "all" todas as vezes).

A melhor forma de explicar isto é fazendo um exemplo. Se você postar
algo que você fez com States podemos ver a possibilidade de Refatorar
(desde que não seja um exemplo muito grande para complicar demais).
Assim como foi feito para o exemplo do Eder. Compare o exemplo que ele
fez com States com o exemplo que eu fiz sem. Qual é mais simples de
entender?

[]'s
Beck Novaes


On 28 set, 12:25, "Arleston Lueders" <arleston.lis...@gmail.com>
wrote:


> Opa Beck, para você.
> Quero começar fazendo pelo caminho certo. :)
> []s
> Arleston
>

Arleston Lueders

unread,
Sep 28, 2007, 1:07:09 PM9/28/07
to fle...@googlegroups.com
Legal, tô seguindo aquele exemplo que vc mencionou acima.
Percebi que no modo Design (do FB2) não consigo aumentar a janela da State, se eu aumento, ela aumenta nas propriedades e tudo certo, mas no modo design fica o mesmo tamanho. Coloquei um VBox e parece que agora consigo aumentar também no modo design.
Mas se eu arrastar um Text ou LinkButton na State, vai aparecer tudo alinhado em cima, não exatamente aonde eu coloquei. É assim mesmo?
Pq tenho digamos meu panel com figura, alguns labels e também linkButons, aí gostaria de colocar na posição que eu quero (de preferência no modo design).

E sobre o linkButton, já saquei como linkar p/ outra State... click="{vs.selectedIndex=3;}" .
Ainda não entendi muito bem quando usar VBox, HBox, etc., mas isso aprende fazendo imagino.
Obrigado. =)


On 9/28/07, Beck Novaes <beck....@gmail.com> wrote:

Arleston Lueders

unread,
Oct 1, 2007, 4:34:28 PM10/1/07
to fle...@googlegroups.com
Acho que descobri... usando mx:Canvas.
Flex é o que há.
[]s
Reply all
Reply to author
Forward
0 new messages