Ir para conteúdo

POWERED BY:

Arquivado

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

ezequielg

FLASH + XML + PHP [ tag HTML ]

Recommended Posts

Olá comunidade!

 

Tenho um SWF que gera uma galeria de imagens com base em um XML.

Acontece que o SWF não está lendo as tags HTML e ainda estão sendo gerados quadros em branco.

 

Abaixo uma explicação mais detalhada do que está ocorrendo.

 

Imagem Postada

 

Abaixo o endereço do SWF para consulta

http://www.provaievede.com.br/xml_flash_php

 

fotos.xml

<?xml version="1.0"  encoding="iso-8859-1" ?> <fotos> <foto grande="fotos/lua.jpg" thumb="fotos/luathumb.jpg" /><![CDATA[<b>Marcos Aurélio</b>Fones: (81) 3429-3902 | (81) 9685-2226email: novo.destino@terra.com.br Reg. Atuação: Alagoas, Paraíba, Pernambuco, Ceará, Rio Grande do Norte, Maranhão, Piauí Marcas: Base]]><foto grande="fotos/flor.jpg" thumb="fotos/florthumb.jpg" /> <![CDATA[]]><foto grande="fotos/nuvens.jpg" thumb="fotos/nuvensthumb.jpg" /> <![CDATA[]]><foto grande="fotos/pilar.jpg" thumb="fotos/pilarthumb.jpg" /> <![CDATA[]]></fotos>
fotos.swf - Action

//include "lmc_tween.as"// criando o objeto XMLvar meuXML:XML = new XML();// ignorando os espaços em brancomeuXML.ignoreWhite = true;// quando o XML carregarmeuXML.onLoad = function():Void{	// variável que retorna a altura de todos os thumbs juntos	altura = (thumb._height*meuXML.childNodes[0].childNodes.length+meuXML.childNodes[0].childNodes.length*2);	// criando um loop for	for(i=0;i<meuXML.childNodes[0].childNodes.length;i++){		// duplicando o movieclip thumb		duplicateMovieClip("thumb","thumb"+i,i+1);		thumbs = _root.tudo_mc["thumb"+i];		// posição de cada thumb		thumbs._y += (thumb._height+2)*i;		// criando uma instância da classe MovieClipLoader		var MCL1:MovieClipLoader = new MovieClipLoader();		// carregando um arquivo no objeto MCL1, de acordo com o primeiro nó do XML, o nó filho atual (i) do atributo thumb, movieclip alvo: thumbs.mostra		MCL1.loadClip(meuXML.childNodes[0].childNodes[i].attributes.thumb,thumbs.mostra);		thumbs.onEnterFrame = function():Void{			// variável que checa o progresso do objeto MCL1			progresso1 = MCL1.getProgress(this.mostra);			// texto do campo pct_thumb: bytes carregados / bytes totais * 100 + o sinal de porcentagem			this.pct_thumb.text = Math.ceil(progresso1.bytesLoaded / progresso1.bytesTotal * 100) + "%";			// se os bytes carregados forem iguais ao bytes totais, deixa o campo de texto invisível, se não, ele continua visível			progresso1.bytesLoaded == progresso1.bytesTotal ? this.pct_thumb._visible = false : this.pct_thumb._visible = true;		}		// variável de referência, que indica o nó atual		thumbs.atual = i;		// texto do campo de texto "campo"		// thumbs.campo.text = i+1;		// retirando a mãozinha do mouse		thumbs.btn.useHandCursor = false;		// quando clicar no movieclip		thumbs.btn.onRelease = function():Void{			// outra instância da classe MovieClipLoader			var MCL2:MovieClipLoader = new MovieClipLoader();			// carregando o arquivo			MCL2.loadClip(meuXML.childNodes[0].childNodes[this._parent.atual].attributes.grande,_root.mc);			// mesma lógica do MCL1			this.onEnterFrame = function():Void{				progresso2 = MCL2.getProgress(_root.mc);				_root.pct.text = Math.round(progresso2.bytesLoaded/progresso2.bytesTotal*100) + "%";				progresso2.bytesLoaded == progresso2.bytesTotal ? _root.pct._visible = false : _root.pct._visible = true;			}			// definindo o texto do campo de texto descrição, de acordo com o nó atual do atributo desc			_root.descricao.htmlText = meuXML.childNodes[0].childNodes[this._parent.atual];		}		// quando passar o mouse		thumbs.btn.onRollOver = function():Void{			// pequena mudança de contraste			_root.tudo_mc["thumb"+this._parent.atual].mostra.contrastTo(50,1);		}		// quando tirar o mouse		thumbs.btn.onRollOut = function():Void{			// voltando ao normal			_root.tudo_mc["thumb"+this._parent.atual].mostra.contrastTo(100,1);		}	}	// criando as ações para a barra de rolagem	_root.rolagem.drag.onPress = function():Void{	var xmin = this._x;	var xmax = this._x;	var ymin = 0;	var ymax = this._parent.fundo._height - this._height;	this.startDrag(false, xmin, ymin, xmax, ymax);		this.onRelease = this.onReleaseOutside = function():Void{		stopDrag();		delete this.onMouseMove();	}		this.onEnterFrame = function():Void{		_root.tudo_mc._y += (-Math.round((this._y / ymax) * (altura - _root.rolagem._height)) - _root.tudo_mc._y)/3;	}}}// carregando o arquivo XMLmeuXML.load("fotos.xml");
Desde já agradeço a atenção dos amigos.

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra resolver a interpretação das tags HTML, use htmlText e nao thumbs.campo.text = i+1; fica assim:

thumbs.campo.htmlText = "texto";

Obrigado Leila, mas não é este o campo que pega o texto.

 

A questão das tags HTML já encontrei uma solução e estou postando pois poderá ajudar outros.

 

Uma das linhas do código estava assim:

 

// definindo o texto do campo de texto descrição, de acordo com o nó atual do atributo desc_root.descricao.htmlText = meuXML.childNodes[0].childNodes[this._parent.atual];
Mudei ela para isso

 

// definindo o texto do campo de texto descrição, de acordo com o nó atual do atributo desc_root.descricao.htmlText = meuXML.childNodes[0].childNodes[this._parent.atual].nodeValue;
Acrescentado nodeValue

 

Quando ao estar gerando mais um quadro em branco, não consegui resolver ainda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera já revisei todo o código e não encontrei o porque está sendo gerado um quadro em branco entre as fotos.

 

Abaixo o endereço do SWF para ver o problemas

http://www.provaievede.com.br/xml_flash_php

 

O problema está neste trecho de código, mas não consigo enchergar.

Como dizem que sempre quem está de fora encherga melhor do que quem está dentro, por favor, dêem uma olhada pra mim.

 

// criando um loop for	for(i=0;i<meuXML.childNodes[0].childNodes.length;i++){		// duplicando o movieclip thumb		duplicateMovieClip("thumb","thumb"+i,i+1);		thumbs = _root.tudo_mc["thumb"+i];		// posição de cada thumb		thumbs._y += (thumb._height+2)*i;		// criando uma instância da classe MovieClipLoader		var MCL1:MovieClipLoader = new MovieClipLoader();		// carregando um arquivo no objeto MCL1, de acordo com o primeiro nó do XML, o nó filho atual (i) do atributo thumb, movieclip alvo: thumbs.mostra		MCL1.loadClip(meuXML.childNodes[0].childNodes[i].attributes.thumb,thumbs.mostra);		thumbs.onEnterFrame = function():Void{			// variável que checa o progresso do objeto MCL1			progresso1 = MCL1.getProgress(this.mostra);			// texto do campo pct_thumb: bytes carregados / bytes totais * 100 + o sinal de porcentagem			this.pct_thumb.text = Math.ceil(progresso1.bytesLoaded / progresso1.bytesTotal * 100) + "%";			// se os bytes carregados forem iguais ao bytes totais, deixa o campo de texto invisível, se não, ele continua visível			progresso1.bytesLoaded == progresso1.bytesTotal ? this.pct_thumb._visible = false : this.pct_thumb._visible = true;		}						// variável de referência, que indica o nó atual		thumbs.atual = i;				// texto do campo de texto "campo"		// thumbs.campo.text = i+1;		// retirando a mãozinha do mouse		// thumbs.btn.useHandCursor = false;						// quando clicar no movieclip		thumbs.btn.onRelease = function():Void{			// outra instância da classe MovieClipLoader			var MCL2:MovieClipLoader = new MovieClipLoader();			// carregando o arquivo			MCL2.loadClip(meuXML.childNodes[0].childNodes[this._parent.atual].attributes.grande,_root.mc);			// mesma lógica do MCL1			this.onEnterFrame = function():Void{				progresso2 = MCL2.getProgress(_root.mc);				_root.pct.text = Math.round(progresso2.bytesLoaded/progresso2.bytesTotal*100) + "%";				progresso2.bytesLoaded == progresso2.bytesTotal ? _root.pct._visible = false : _root.pct._visible = true;			}			// definindo o texto do campo de texto descrição, de acordo com o nó atual do atributo desc			_root.descricao.htmlText = meuXML.childNodes[0].childNodes[this._parent.atual].nodeValue;		}

Código completo

 

//include "lmc_tween.as"// criando o objeto XMLvar meuXML:XML = new XML();// ignorando os espaços em brancomeuXML.ignoreWhite = true;// quando o XML carregarmeuXML.onLoad = function():Void{	// variável que retorna a altura de todos os thumbs juntos	altura = (thumb._height*meuXML.childNodes[0].childNodes.length+meuXML.childNodes[0].childNodes.length*2);			// criando um loop for	for(i=0;i<meuXML.childNodes[0].childNodes.length;i++){		// duplicando o movieclip thumb		duplicateMovieClip("thumb","thumb"+i,i+1);		thumbs = _root.tudo_mc["thumb"+i];		// posição de cada thumb		thumbs._y += (thumb._height+2)*i;		// criando uma instância da classe MovieClipLoader		var MCL1:MovieClipLoader = new MovieClipLoader();		// carregando um arquivo no objeto MCL1, de acordo com o primeiro nó do XML, o nó filho atual (i) do atributo thumb, movieclip alvo: thumbs.mostra		MCL1.loadClip(meuXML.childNodes[0].childNodes[i].attributes.thumb,thumbs.mostra);		thumbs.onEnterFrame = function():Void{			// variável que checa o progresso do objeto MCL1			progresso1 = MCL1.getProgress(this.mostra);			// texto do campo pct_thumb: bytes carregados / bytes totais * 100 + o sinal de porcentagem			this.pct_thumb.text = Math.ceil(progresso1.bytesLoaded / progresso1.bytesTotal * 100) + "%";			// se os bytes carregados forem iguais ao bytes totais, deixa o campo de texto invisível, se não, ele continua visível			progresso1.bytesLoaded == progresso1.bytesTotal ? this.pct_thumb._visible = false : this.pct_thumb._visible = true;		}						// variável de referência, que indica o nó atual		thumbs.atual = i;				// texto do campo de texto "campo"		// thumbs.campo.text = i+1;		// retirando a mãozinha do mouse		// thumbs.btn.useHandCursor = false;						// quando clicar no movieclip		thumbs.btn.onRelease = function():Void{			// outra instância da classe MovieClipLoader			var MCL2:MovieClipLoader = new MovieClipLoader();			// carregando o arquivo			MCL2.loadClip(meuXML.childNodes[0].childNodes[this._parent.atual].attributes.grande,_root.mc);			// mesma lógica do MCL1			this.onEnterFrame = function():Void{				progresso2 = MCL2.getProgress(_root.mc);				_root.pct.text = Math.round(progresso2.bytesLoaded/progresso2.bytesTotal*100) + "%";				progresso2.bytesLoaded == progresso2.bytesTotal ? _root.pct._visible = false : _root.pct._visible = true;			}			// definindo o texto do campo de texto descrição, de acordo com o nó atual do atributo desc			_root.descricao.htmlText = meuXML.childNodes[0].childNodes[this._parent.atual].nodeValue;		}						// quando passar o mouse		thumbs.btn.onRollOver = function():Void{			// pequena mudança de contraste			_root.tudo_mc["thumb"+this._parent.atual].mostra.contrastTo(50,1);		}				// quando tirar o mouse		thumbs.btn.onRollOut = function():Void{			// voltando ao normal			_root.tudo_mc["thumb"+this._parent.atual].mostra.contrastTo(100,1);		}			}		// criando as ações para a barra de rolagem	_root.rolagem.drag.onPress = function():Void{		var xmin = this._x;		var xmax = this._x;		var ymin = 0;		var ymax = this._parent.fundo._height - this._height;		this.startDrag(false, xmin, ymin, xmax, ymax);				this.onRelease = this.onReleaseOutside = function():Void{			stopDrag();			delete this.onMouseMove();		}				this.onEnterFrame = function():Void{			_root.tudo_mc._y += (-Math.round((this._y / ymax) * (altura - _root.rolagem._height)) - _root.tudo_mc._y)/3;		}	}}// carregando o arquivo XMLmeuXML.load("fotos.xml");
Obrigado galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Eder!Você conseguiu baixar os arquivos e dar uma analisada neles?---------------------------------------------------------------------------------------------------Olá Eder!Fera, no link abaixo estão disponíveis todos os arquivos que estou usando.http://www.provaievede.com.br/xml_flash_php/flash_xml.zipAqui você pode encontrar o exemplo on-linehttp://www.provaievede.com.br/xml_flash_phpObrigado pela força mano.---------------------------------------------------------------------------------------------------

teria como você postar o FLAassim facilitaria a vida do pessoal aqui poder te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

dei uma olhada no seus arquivos e vi que o erro era por causa do XML, não estava bem formatado

 

mudei ele pra ficar assim

<?xml version="1.0"  encoding="iso-8859-1" ?> <fotos>   <foto grande="fotos/lua.jpg" thumb="fotos/luathumb.jpg" ><![CDATA[<b>Lua</b> <br />Foto noturna]]></foto><foto grande="fotos/flor.jpg" thumb="fotos/florthumb.jpg" ><![CDATA[<b>Margarida</b> <br />Linda flor]]></foto><foto grande="fotos/nuvens.jpg" thumb="fotos/nuvensthumb.jpg" ><![CDATA[<b>Céu</b> <br />Ao contemplar o céu, me aproximo de ti ó Pai!]]></foto><foto grande="fotos/pilar.jpg" thumb="fotos/pilarthumb.jpg" ><![CDATA[<b>Muro</b> <br />Teste para ter uma idéia de como se comporta o texto com mais de uma linha. Teste para ter uma idéia de como se comporta o texto com mais de uma linha. Teste para ter uma idéia de como se comporta o texto com mais de uma linha. Teste para ter uma idéia de]]></foto></fotos>

 

 

e no AS, a unica linha q tem q mexer é nessa

 

_root.descricao.htmlText = meuXML.childNodes[0].childNodes[this._parent.atual].childNodes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eder, muito obrigado pela atenção.Realmente agora está funcionando.Com a alteração do AS que você sugeriu, o Flash não interpreta mais as tags HTML.Tem como fazer com que o Flash continue interpretando-as?Mano, você tem algum livro de XML e AS para indicar a um iniciante como eu?Valeu pela força fera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele ta jogando com as tag´s, então você dá um "jeitinho"

 

_root.descricao.htmlText = meuXML.childNodes[0].childNodes[this._parent.atual].childNodes_root.descricao.htmlText = _root.descricao.text

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eder, lembra da galeria que em XML que você me ajudou a fazer ?Como falei anteriormente, ela está funcionando perfeitamente.Porém surgiu a necessidade de carregar a galeria dentro de um movie já exixtente e a mesma não carrega mais as fotos.O que aconteceu.Fiquei sem entender.Apenas o arquivo funciona, agora no momento que ele é chamado dentro de outro movie, para de funcionar.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Eder!Consegui um código que resolveu o problema.Só tinha esquecido de postar.Coloquei no primeiro quadro do movie esse Action----------------------------------------------------------------------this._lockroot=true;----------------------------------------------------------------------Valeu pela força fera.

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.