Jump to content

Actionscript + xml - passar valores


NunoOliveira1977

Recommended Posts

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

Edited by coxosclassic
Link to post
Share on other sites
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

Cumps,

cc

Link to post
Share on other sites
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

Link to post
Share on other sites
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

Edited by coxosclassic
code fix

Cumps,

cc

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.