Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

NunoOliveira1977

Actionscript + xml - passar valores

Mensagens Recomendadas

NunoOliveira1977    0
NunoOliveira1977

Bom dia,

Estou a precisar de uma ajuda para um projecto que integra com xml.

Tenho a seguinte estrutura de xml:

<pais nome="Brasil">
 <distrito nome="Amazonas">
   <doenca nome="Malária">Malária</doenca>
   <doenca nome="Chagas">Chagas</doenca>
 </distrito>
 <distrito nome="Bahia">
   <doenca nome="Malária">Malária</doenca>
 </distrito>
</pais>

no flash, o que precisava fazer é o seguinte:

Tenho um mapa, com os vários distritos.

Tenho um groupbutton, com vários radios, com o nome de doenças.

O que pretendia era, que ao seleccionar uma doença, fosse percorrido o xml até a encontrar, e passasse o nome do "distrito" desse nó para o flash. O obecjtivo principal, é que sempre que existisse a doença, fosse mudada a cor no mapa.

Já fiz a parte dos movieclips no mapa e os radios também.

Estou com problemas é em extrair os nomes no xml.

Alguém me pode ajudar?

Obrigado

Editado por coxosclassic

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
coxosclassic    4
coxosclassic

Boas NunoOliveira1977

Nao consegui perceber muito bem o que pretendes, mas para conseguires extrair o atributo "nome" do xml usa o seguinte:

//xml é o teu xml
var nome:String = xml.@nome

Se precisares de mais ajuda avisa, mas coloca mais codigo que tenhas relativo ao xml.

cumps,

cc

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NunoOliveira1977    0
NunoOliveira1977

Olá cc,

Desde já muito obrigado pela tua atenção.

Vou tentar explicar melhor o que pretendo.

No flash tenho um radiobutton com o nome "Malária". O que pretendo basicamente, é que, dentro do meu xml (ver em cima), percorra o xml até encontrar <doenca nome="Malária">Malária</doenca>. Quando encontra, passa para um textbox no flash o nome do distrito associado. Neste caso seria: <distrito nome="Amazonas"> (passaria o nome "Amazonas" para o flash...

... continuando a percorrer o xml, iria encontrar novamente no distrito: <distrito nome="Bahia">. Queria que passasse também o nome "Bahia" para um textbox no flash.

Basicamente era isto.

Obrigado.

Cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
coxosclassic    4
coxosclassic

Ola,

OK, acho que ja percebi. :)

Sugiro que facas o seguinte:

no teu evento de "click" dos teus radioButtons:

private function onRadioButtonclick(e:MouseEvent):void {

 //ira servir para guardar os elementos que contenham as doencas
 var xmlList:XMLList = new XMLList();
 // string para colocar no TextField
 var str:String = "";

 switch(e.target) {
// radio button da malaria por exemplo.
case malariaButton:
  //pesquisa no XML quais os elementos (distrito) que conteem a doenca "Malária".
  xmlList = xmlData.distrito.(descendants("doenca").@nome.contains("Malária"));
break;
// radio button da chaga por exemplo.
case chagasButton:
  //pesquisa no XML quais os elementos (distrito) que conteem a doenca "Malária".
  xmlList = xmlData.distrito.(descendants("doenca").@nome.contains("Chagas"));
break;
 }

 //iterar sobre o xmlList para recolher o atributo nome de cada um dos distritos que conteem a doenca
 for each (var node : XML in xmlList) {
str += node.@nome + ", ";
 }

 //colocar o texto (str) na tua textField
 tf.text = str;
}

Nao testei bem o codigo, pode ser que existam alguns erros, mas a logica sera por aqui...

links uteis:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/XML.html

http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7ff5.html

http://www.republicofcode.com/tutorials/flash/as3xml/

ATENCAO: Este codigo esta em AS3. se estiveres a usar AS2, sera um pouco diferente!!

Uma outra sugestao:

Como deves saber, o Flash é uma tecnologia muito boa, mas infelizmente ja nao é muito usado.

Se estiveres a fazer isto para um website e nao tiveres nenhuma obrigacao para usar Flash, sugiro que uses HTML5 / JS para fazeres isto. Ao usares HTML5 / JS podes contar que todas as pessoas irao poder ver o teu projeto na web (em desktop e mobile) o que é uma grande vantagem em relacao ao Flash :)

Se tiveres duvidas avisa.

cumps,

cc

Editado por coxosclassic
code fix

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.