Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marciocorbolan

Flash/XML - Problema em pegar atributo

Recommended Posts

Boa noite,

 

 

Atualmente possuo um sistema de banner que busca os dados em um arquivo XML e monta uma matriz com todas as informações. Buscando melhorias, resolvi incrementar o banner colocando um "MC" para receber uma "URL" e assim poder abrir o endereço da "promoção" exibida. Enfim, querendo melhorar as coisas, acabei arrumando duas dores de cabeça!

 

 

Como dito acima, crio uma Matriz com as informações vindas do XML. Destas informações (Ilustração/Endereço/Descrição), somente a Ilustração é obrigatória, o Endereço e a Descrição são opcionais. Após montar tudo eu testei com o trace e todos os campos, inclusive os em branco foram importados com sucesso!

total = Arquivo_Importado.firstChild.childNodes.length;
for (i=0; i<total; i++)
{
 banner[i] = new Array();

 banner[i]['arquivo'] = Arquivo_diretorio+Arquivo_Importado.firstChild.childNodes[i].attributes.arquivo;
 banner[i]['endereco'] = Arquivo_Importado.firstChild.childNodes[i].attributes.endereco;
 banner[i]['descricao'] = Arquivo_Importado.firstChild.childNodes[i].childNodes[0].nodeValue;
}

 

 

O processo de exibição é bem parecido, o que muda é quem receberá os dados, dessa vez os objetos do banner! Devido a essa condição, a propaganda que não tiver a descrição ou endereço cadastrado, terá área de destino aquela informação oculta e a célula da matriz ignorada.

mc_loader.loadClip(banner[contador]['arquivo'], banner_palco);

if(banner[contador]['descricao'].length != 0)
{
   banner_descricao.text = banner[contador]['descricao'];
   banner_descricao._visible = true;
}
else
{
   banner_descricao.text = "";
   banner_descricao._visible = false;
}

if(banner[contador]['endereco'].length != 0)
{
   banner_area.onPress = function(){ getURL(banner[contador]['endereco'], "_self"); }
}
else
{
   banner_area.onPress = null;
}

 

 

Vamos a pratica! Imagine que temos 3 registros no arquivo XML, desses 3, os dois primeiros estão sem informação no campo de descrição e no de endereço.

<?xml version="1.0" encoding="UTF-8"?>
<BANNER>
 <item arquivo="06052010014104FOTO1.JPG" endereco="1.html"><![CDATA[]]></item>
 <item arquivo="06052010010425FOTO1.JPG" endereco=""><![CDATA[2]]></item>
 <item arquivo="17022011183139FOTO1.JPG" endereco="3.html"><![CDATA[3]]></item>
 <item arquivo="17022011010225FOTO1.JPG" endereco="4.html"><![CDATA[4]]></item>
</BANNER>

 

 

Ao executar o aplicativo, o "Trace" do "Flash" identifica o conjunto de dados em perfeita formação.

** Dados do XML - Banner 0 de 1
** Arquivo: 06052010014104FOTO1.JPG
** Endereço: 1.html
** Descrição: 

** Dados do XML - Banner 1 de 2
** Arquivo: 06052010010425FOTO1.JPG
** Endereço: 
** Descrição: 2

** Dados do XML - Banner 2 de 3
** Arquivo: 17022011183139FOTO1.JPG
** Endereço: 3.html
** Descrição: 3

** Dados do XML - Banner 3 de 4
** Arquivo: 17022011010225FOTO1.JPG
** Endereço: 4.html
** Descrição: 4

 

 

Durante a execução do aplicativo, o "Flash" exibiu cada Descrição em sua devida Propaganda, ou seja, durante a primeira chamada não foi exibido nenhum texto, na segunda chamada foi exibido o segundo texto, na terceira chamada foi exibido o terceiro texto e assim prosseguiu! Independente da ordem que for, sempre foi respeitada a ordem de cada descrição e sua propaganda!

 

O problema apareceu com a exibição do endereço/link. Quando o aplicativo chegava em uma propaganda que não havia link, mesmo com a validação ele pulava para a próxima célula e pegava o valor, ou seja, durante a primeira chamada foi exibido o primeiro link, na segunda chamada não houve link, na terceira chamada foi exibido o quarto link e a quarta chamada foi exibido "undefined". Caso eu preencha todos os dados do XML, o aplicativo exibe todos os dados na ordem certa e sem nenhum problema! Alguém sabe o que está gerando isso e como posso resolver?

 

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser que o atributo venha como undefined por não achar nada, dai se ele gravar como undefined, o length pode ser diferente de 0, tente colocar assim:

 

banner['endereco'] = Arquivo_Importado.firstChild.childNodes.attributes.endereco != undefined? Arquivo_Importado.firstChild.childNodes.attributes.endereco: "";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!

 

 

Descobri aonde estava o erro, o motivo/razão/circunstância eu não faço idéia! Só sei que troquei as seguintes linhas abaixo e tudo passou a funcionar maravilhosamente bem!

 

Troquei estas

banner_area.onPress = function(){ getURL(banner[contador]['endereco'], "_self"); }

 

Por estas

temp = banner[contador]['endereco'];
banner_area.onPress = function(){ getURL(temp, "_self"); }

 

 

Se alguém tiver uma explicação plausível, compartilhe... estou curioso! uhaaaahauha

 

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.