Chamar uma página mxml escolhendo seu State

Eu tenho na aplicação um botão cadastrar, nele é chamado um alert que possui dois tipos cadastros, eu tenho uma página mxml de cadastro, com dois States stateBase(Profissional) e stateEmpresa, eu queria chamar uma mxml passando o state escolhido, eu tente usar o this.currentState=‘stateEmpresa’, mas não deu certo, tem como eu fazer isso, esse é o código:

private function goToURL(myUrl:String):void
{
var urlToNav:URLRequest = new URLRequest(myUrl);
navigateToURL(urlToNav,"_self");
}

private function tipoPerfil(event:Event):void {
Alert.buttonWidth = 120;
Alert.buttonHeight = 30;
Alert.yesLabel = “Profissional”;
Alert.noLabel = “Empresa”;
Alert.show(“Selecione o Tipo de Cadastro:”,“Cadastro”, Alert.YES|Alert.NO, null, selecionarTipoPerfil);
}

private function selecionarTipoPerfil(event:CloseEvent):void {
if (event.detail==Alert.YES)
goToURL(‘Cadastro.html’); //Funciona corretamente vai para o stateBase
else if (event.detail==Alert.NO)
goToURL(‘Cadastro.html’); // Vai para o stateBase, eu queria ir para o stateEmpresa
this.currentState=‘stateEmpresa’;// Uma tentativa sem noção, não deu certo
}

Obrigado desde já.

Boa tarde Denis,

Por que você está tentando acessar a tela de Cadastro usando o navigateToURL? Você já pensou em trabalhar com uma ViewStack?
Se suas telas estiverem dentro de um Application, você consegue mudar o state da tela de cadastro facilmente.

Você poderia ter algo assim

Application
– ViewStack
---- Tela 1
------ Pergunta (Profissional ou empresa?)
---- Cadastro

Quando o usuário responder, na “Tela 1”, se é profissional ou empresa, a “Tela 1” vai fazer algo assim

telaCadastro.currentState = "stateEmpresa";
myViewStack.currentIndex = 1;

Entendeu? Você não precisa ficar carregando páginas para cada tela que for acessar, isso quebra a idéia do Flex. Geralmente no Flex, trazemos as telas sempre e os dados apenas são trafegados quando necessário. Mas a mudança de telas não deveria exigir uma requisição ao servidor.

[]s

Eu estou usando view state mas em algumas partes

São diversas telas, se eu fizer tudo em uma única mxml vai ficar muito grande o código e consequentemente dificil a manutenção, é uma rede social, como eu tenho que apresentar terça feira na faculdade, eu criei duas mxml diferentes para cadastro, resolveu o problema, mas neste caso como a tela era parecida, eu queria usar só state

Valeu.

Hum, entendi. Você já tentou abrir o segundo swf dentro de um SWFLoader? Com o SWFLoader você deve poder fazer algumas manipulações. Uma outra opção, que deve ser estudada melhor antes de usar, são os módulos. Mas tem que ser feita com cuidado pra evitar alguns probleminhas que podem aparecer.

Se nada resolver e você precisar resolver rápido, tente pegar a URL pelo Application.application, tem uma propriedade que não lembro agora que tem a URL. Ai você passa o state pala URL. Mas não é uma boa solução nem de perto… :stuck_out_tongue:

[]s

Não use states, deixa o código horrível e impossível pra manutenção. Só “presta” usar states com 2 estados apenas, e mesmo assim se for coisa muito simples. Acho que você vai ter que copiar e colar mesmo.

Fora isso, tente não usar ViewStack, tente usar TitleWindows e abri-las usando PopupManager.

[]'s

Agradeço vcs pelas dicas

Eu tô com problemas para fazer um datagrid receber dados do banco, e também fazer um login, eu fiz um tópico aqui no guj, se puderam me ajudar http://www.guj.com.br/posts/list/147554.java

Falowss