Ir para conteúdo

Arquivado

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

rodrigo_gomes

ASP + XML + Flash

Recommended Posts

pessoal,

 

já procurei muito sobre esta dúvida e não consegui resolver meu problema, sou novo em programação AS e estou desenvolvendo uma espécie de "galeria de fotos" onde o usuário escolhe as fotos que desejam, e ao submeter o formulário o código ASP escreve o xml e chama a pagina que contem o Flash para mostrar apenas as fotos escolhidas. Nessa galeria de fotos existe a opção de adicionar fotos e remover fotos.

 

O problema quando o usuário escolhe uma foto e vai para a Galeria (Flash), na primeira e na segunda vez funciona na boa mas aí da terceira em diante embora no XML as referencias das fotos continuem a serem adcionadas no Flash não atualiza.

 

Até aí presumi que fosse problema de Cache e já mandei um e até dois numeros randomicos carregarem junto com o arquivo XML para que ele possa atualiza-lo e mesmo assim não funciona.

 

Por favor me ajudem estou com o prazo atrazado e não consigo resolver esse problema, abaixo segue parte do código AS que estou utilizando:

 

Stop();vPos1 = 1;vPos2 = 2;vPos3 = 3;vPos4 = 4;function paginador(valor){	return valor + z;	}NomeXml = nomedoarquivo;System.useCodepage = true;meuXML = new XML(); meuXML.load("mesa_arquivos/"+NomeXml+"?"+getTimer()+rn, 0);meuXML.ignoreWhite = true;meuXML.onLoad = function(){	fotosQnt = this.childNodes[0].childNodes[0].attributes.quantidadetotal	Total = this.childNodes[0].childNodes[0].attributes.quantidadetotal	if (paginador(vPos1) <= Total) {   loadMovie("images/fotos/"+this.childNodes[0].childNodes[paginador(vPos1)].attributes.nomefoto, pos1);   CodPos1 = this.childNodes[0].childNodes[paginador(vPos1)].attributes.codigofoto   }
Agradeço desde já a colaboração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou te explicar umas coisas sobre o que você esta tentando fazer e vai te ajudar não só agora como sempre que você for programar em flash.

O Flash tem uma função chamada trace que te retorna na tela de output alguma informação que você precisa saber, ou pra ver se um xml esta vindo certo, ou qquer outra coisa, então vou te explicar primeiro o motivo do parseInt, você deve ter setado no seu XML um valor numérico pra ser usado no for, mas qquer valor que você puxe de fora, ele vem como String e não Number, se você usar por exemplo:

 

meuXML.onLoad = function(){

fotosQnt = this.childNodes[0].childNodes[0].attributes.quantidadetotal

Total = this.childNodes[0].childNodes[0].attributes.quantidadetotal

trace(typeof(Total)); // aqui provavelmente ele retornará como string na tela

if (paginador(vPos1) <= Total) {

loadMovie("images/fotos/"+this.childNodes[0].childNodes[paginador(vPos1)].attributes.nomefoto, pos1);

CodPos1 = this.childNodes[0].childNodes[paginador(vPos1)].attributes.codigofoto

}

 

Ai ele vai te retornar String, se você usar parseInt, ele vai te retornar como Number e você vai conseguir fazer a conta, outro detalhe é o loadMovie, você esta sempre usando o pos1 como alvo, sendo que você precisa usar um alvo diferente para cada imagem carregada, a não ser que esse pos1 sea uma váriavel ou constante.

 

E tb falta um loop ai pra carregar mais de uma imagem, ou um while que tb tem no ASP, ou um for, qquer um para que a ação seja executada mais de uam vez, pois ai me parece que esta sem um loop ai não tem jeito dele carregar mais do que uma imagem, deu pra entender?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carneirinho,deu sim para entender você esta sentindo falta do while é porque estou postando apenas parte do código ou seja a de interesse para a dúvida o resto funciona bem. Na verdade fiz isso para não "encher" muito almas caridosas como você hehehehe que sempre estão disposto e cheio de paciencia para ajudar iniciantes como eu.Gostei da dica do trace(TypeOf essa realmente eu não sabia.Ele carrega até 2 fotos na boa daí em diante é que não funciona.putz cara estou ficando maluco com isso.Muito obrigado mesmo se tiver mais alguma luz eu realmente agradeço de coração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O trace vai te retornar qquer valor, o typeof é uma função que retorna o tipo de um objeto, se é movieclip, string, number ou o que for, o trace pega esse valor da função e te exibe na tela, se você colocar trace("qualquer coisa"); ele te devolve o qualquer coisa na tela, se colocar trace(qualque coisa) ele te retorna undefined pois é algo ainda indefinido, faz o seguinte, posta sua ação com o while que vendo tudo ja da pra ter mais noção do que pode ter, pois estou sentindo falta de muita coisa ainda no código, e sair adivinhando o que pode ser, sempre é mais demorado.

 

abraço,

 

Carneirinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, foi você quem pediu hein hehehehe!!!

 

Assim na verdade não estou usando um while eu pego a quantidade de fotos total e vou abrindo de quantro em quatro.

 

Quando o usuário clica em um botão ou Next ou Prev. eu somo mais quatro a variavel z ou subtraio no caso de prev. Esse mesmo sistema funcionou beleza eu um outro trabalho meu onde o XML é fixo.

 

enfim o código:

Stop();vPos1 = 1;vPos2 = 2;vPos3 = 3;vPos4 = 4;function paginador(valor){	return valor + z;	}NomeXml = nomedoarquivo;System.useCodepage = true;meuXML = new XML(); meuXML.load("mesa_arquivos/"+NomeXml+"?"+getTimer()+rn, 0);meuXML.ignoreWhite = true;meuXML.onLoad = function(){	fotosQnt = this.childNodes[0].childNodes[0].attributes.quantidadetotal	Total = this.childNodes[0].childNodes[0].attributes.quantidadetotal	if (paginador(vPos1) <= parseInt(Total)) {   loadMovie("images/fotos/"+this.childNodes[0].childNodes[paginador(vPos1)].attributes.nomefoto, pos1);   CodPos1 = this.childNodes[0].childNodes[paginador(vPos1)].attributes.codigofoto   }   if (paginador(vPos2) <= parseInt(Total)) {   loadMovie("images/fotos/"+this.childNodes[0].childNodes[paginador(vPos2)].attributes.nomefoto, pos2);   CodPos2 = this.childNodes[0].childNodes[paginador(vPos2)].attributes.codigofoto   }   if (paginador(vPos3) <= parseInt(Total)) {   loadMovie("images/fotos/"+this.childNodes[0].childNodes[paginador(vPos3)].attributes.nomefoto, pos3);   CodPos3 = this.childNodes[0].childNodes[paginador(vPos3)].attributes.codigofoto   }   if (paginador(vPos4) <= parseInt(Total)) {   loadMovie("images/fotos/"+this.childNodes[0].childNodes[paginador(vPos4)].attributes.nomefoto, pos4);   CodPos4 = this.childNodes[0].childNodes[paginador(vPos4)].attributes.codigofoto   }   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, são muitos ifs, bom, agora esta tarde e vou dar uam descansada, amanhã vou te ensinar um loop pro seu código ficar mais fácil de usar quando tiver mais fotos, de inicio de um trace dos movieclips e das fotos pra ver se eles estão dando os valores certos, por exemplo:

 

stop();
vPos1 = 1;
vPos2 = 2;
vPos3 = 3;
vPos4 = 4;
function paginador(valor)
{
	return valor + z;
	
}


NomeXml = nomedoarquivo;
System.useCodepage = true;
meuXML = new XML(); 
meuXML.load("mesa_arquivos/"+NomeXml+"?"+getTimer()+rn, 0);
meuXML.ignoreWhite = true;
meuXML.onLoad = function(){
	fotosQnt = this.childNodes[0].childNodes[0].attributes.quantidadetotal
	Total = this.childNodes[0].childNodes[0].attributes.quantidadetotal
	if (paginador(vPos1) <= parseInt(Total)) {
   loadMovie("images/fotos/"+this.childNodes[0].childNodes[paginador(vPos1)].attributes.nomefoto, pos1);
   CodPos1 = this.childNodes[0].childNodes[paginador(vPos1)].attributes.codigofoto
   }
   if (paginador(vPos2) <= parseInt(Total)) {
   loadMovie("images/fotos/"+this.childNodes[0].childNodes[paginador(vPos2)].attributes.nomefoto, pos2);
   CodPos2 = this.childNodes[0].childNodes[paginador(vPos2)].attributes.codigofoto
   }
   if (paginador(vPos3) <= parseInt(Total)) {
   trace("images/fotos/"+this.childNodes[0].childNodes[paginador(vPos3)].attributes.nomefoto);
   trace(typeof(pos3));
   CodPos3 = this.childNodes[0].childNodes[paginador(vPos3)].attributes.codigofoto
   }
   if (paginador(vPos4) <= parseInt(Total)) {
   trace("images/fotos/" + this.childNodes[0].childNodes[paginador(vPos4)].attributes.nomefoto);
   trace(typeof(pos4));
   CodPos4 = this.childNodes[0].childNodes[paginador(vPos4)].attributes.codigofoto
   }
   
}

Ah e note tb que o stop(); é com s mínusculo, veja se ele retorna o caminho certo da foto com o nome certo dela e se o pos3 e pos4 retornam como movieclip.

 

abraço,

 

Carneirinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você testou as ações que te passei?Ela está retornando os dois caminhos da imagem e os typeof como movieclip?O loadMovie depende de duas coisas, o alvo e a imagem, se ele ta achando o alvo (movieclip) e o caminho certo da imagem, ai o problema só pode estar na sua imagem, o flash não carrega jpg progressivo, veja se você não salvou o jpg como progressivo e se for progressivo altere para normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carneirinho,testei sim cara, ta tudo correto, é como te falei se eu coloco um xml já pronto com um monte de imagens ele funciona, mas quando vou escrevendo o xml uma por uma que é adcionando as imagens o flash não atualiza depois da terceira ou quarta.Posso te mandar o link para você ver como esta ocorrendo?mas aí tem que ser ou por e-mail ou por mp para que futuramente o google não encontre o post senão o cliente vai ficar p da vida. 8-) que o site dele seja associado a uma dúvida no fórum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você ja viu a parada do jpg ser progressivo?Posta os arquivos nesse link www.rapidshare.de da o upload e depois posta ai a url pra baixar, ele some depois de 15 dias sem uso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, como você quer ser ajudado desse jeito?Eu to tentando descobrir com você qual é o problema, você mal responde minhas perguntas, ai vou te dando os toques e peço pra você me mandar o arquivo pra ver onde esta o erro, você vai e me posta um txt ao invés de colocar os arquivoe e no txt tem o link do flash que não carrega nenhuma foto, que vcdisse que as duas carregavam, ai fui acessar o xml no link http://www.oceanweb.com.br/clientes/brstoc..._arquivos/0.xml e no xml esta setado pra 0 fotos e não tem nenhum atributo ocm nome da foto nem nada, como vou descobrir o erro sem os arquivos na mão e com o script escondido?A gente aqui tem a intenção de ajudar, mas não somos um pai de santo atrás da tela com um charuto na mão que da uma baforada no tópico e a resposta aparece na tela e a gente manda pro usuário, se não funciona tem que ir atrás, testar coisa por coisa, ver o que pode estar errado, nem eu e nem ninguem vai conseguir te ajudar com as informações que esta passando, bom, boa sorte ai.

 

abraço,

 

Carneirinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carneirinho,

 

cara me desculpe se não fui muito claro, como eu informei no txt eu não tinha acesso ao arquivo de onde estava mas disse que eu iria te passar assim que pudesse que é agora... eu passei o link do site apenas para você ter uma idéia de como a coisa estava rolando, era apenas para testar o site e ver exatamente qual é o problema pq percebi que não consegui passar direito o problema para você.

 

Bom se ainda estiver disposto a ajudar o link do fla esta abaixo.

 

Sei reconhecer sua boa intenção, por isso expliquei no txt pq não forneci o arquivo. A unica coisa que peço embora não estou em posição de pedir nada é que mantenha o nome da empresa do cliente anonimo como você fez acima para não me queimar.

 

Link do Fla

 

Obrigado cara de coração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O dia que você decidir postar as imagens e o xml eu vou te ajudar, não vou ficar aqui tentando descobrir que imagem esta usando, que xml, você só mandou coisa incompleta até agora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O dia que você decidir postar as imagens e o xml eu vou te ajudar, não vou ficar aqui tentando descobrir que imagem esta usando, que xml, você só mandou coisa incompleta até agora.

Carneirinho, o xml quem monta é o asp se eu coloco um pronto ele funciona na boa mas mesmo assim estou lhe enviando o link para download.Arquivos ZipadosAgradeço sua boa vontade e paciencia, mas muito coisa eu ainda não me ligo como disse sou totalmente novo em flash.Obs.: cada vez que você entra no site você recebe um ID e então é criado um XML para você.Obs2.: Os jpg não são progressivos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem sei como te dar essa notícia, mas aqui não mexi em nada e abriu as 5 fotos, pra não dizer que não mexi só alterei a linha do loadXml para

 

meuXML.load("xml.xml");

 

e funcionou tudo

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.