Ir para conteúdo

POWERED BY:

Arquivado

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

serpaulo

legenda

Recommended Posts

Falae galera.... tudo bem... entao... preciso de um help...

 

Segui o tutorial de uma galeria de imagens que esta no imasters

 

http://imasters.com.br/artigo/2729/xml...magens_com_xml/

 

Acontece que agora surgiu a necessidade de colocar legendas para as fotos... e estou tentando e nao estou conseguindo....

 

Alguem pode me dar um help em como fazer.... vi que teria que colocar um text dinamico para isso... mas meu problema é com o AS e em como codificar o flash para buscar a legenda do xml.

 

Valeu galera

 

o XML esta assim

 

 

<imasters>

<fotos fp="foto1p.jpg" fg="foto1g.jpg" legenda "teste de legenda"/>

<fotos fp="foto2p.jpg" fg="foto2g.jpg" legenda "teste de legenda"/>

<fotos fp="foto3p.jpg" fg="foto3g.jpg" legenda "teste de legenda"/>

<fotos fp="foto2p.jpg" fg="foto2g.jpg" legenda "teste de legenda"/>

</imasters>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro do movieclip item_mc, crie um campo dinamico, para criar, clique T na barra de ferramentas a esquerda, clique no stage e mude na barra de properties num combo, de static pra dynamic, instancie ele com o nome que desejar, no caso poderia ser chamar texto.

 

o codigo AS ficaria simples:

// insere o texto ao campo dinamico

mc.texto.text = dados.attributes.legenda;

// ajusta o campo ao tamanho da string e alinha a esquerda

mc.texto.autoSize = "left"

 

o xml que voce postou esta sem o = para o atributo legenda, nao esqueça de adiciona-lo tbm

 

espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amaguil valeu mesmo.. ja estou conseguindo mostrar a primeira legenda, mas so aparece quando tiro o mc do mc.texto.text = dados.attributes.legenda; mas aparece sempre a primeira legenda para todas as fotos... acho que tenho que colocar um laço ou loop para mostrar as outras legendas certo?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falae silverfox.... valeu a forca

 

Aqui esta o link para o fla Link para o FLA

 

 

aqui esta o AS

 

import mx.effects.Tween;
var i:Number = 0, coluna:Number = 0, linha:Number = 0, len:Number = 0;
var dados:Array;
var carregar:MovieClipLoader = new MovieClipLoader();
var fotos:XML = new XML();
// A variával qc (quantidade de colunas) vai definir quantas colunas serão exibidadas por página
var qc:Number = 3;
//A variável ql(quantidade de linhas) vai definir quantas linhas serão exibidadas por página
var ql:Number = 5;
// Há também a variável qp (quantidade de páginas). Essa quantidade vai ser definida de acordo com a quantidade de imagens que temos no XML 
var qp:Number = 0;
// Defina um array chamado mcs.
var mcs:Array = [];
fotos.ignoreWhite = true;
fotos.load("fotos.xml");
fotos.onLoad = function() {
	dados = this.firstChild.childNodes;
	texto.text = dados[i].attributes.legenda;
	texto.autoSize = "center"
	len = dados.length;
	//Agora, faça o cálculo para ver quantas páginas serão necessárias para a quantidade
	//de imagens que existem no XML, e atribua esse valor à variável qp (quantidade de páginas)
	//Para isso, use o método estático da classe Math ceil. Mas o que esse método faz?
	//Ele arredonda o valor que foi passado como argumento, para cima ou para baixo, para o inteiro mais próximo e retorna esse valor.
	qp = Math.ceil((len-1)/(qc*ql));
	//A condicional abaixo verifica se a variável qp é maior 1, caso verdadeiro ele vai executar a função criaPaginacao
	//Se não executa apenas a função preencher
	if (qp>1) {
		//Executando a função criaPaginacao, passe como argumento a variável len 
		criaPaginacao(len);
	} else {
		preencher(coluna, linha);
	}
};
function preencher(coluna:Number, linha:Number):Void {
	var mc:MovieClip = container.attachMovie("item_mc", "i["+coluna+"]["+linha+"]", container.getNextHighestDepth());
	mc._x = Math.round(coluna*mc._width+coluna);
	mc._y = Math.round(linha*mc._height+linha);
	mc._xscale = mc._yscale=0;
	mc.url_fotop = dados[i].attributes.fp;
	mc.url_fotog = dados[i].attributes.fg;
	mc.onRelease = function() {
		carregarFoto(this.url_fotog, fotog);
	};
	mc.onTweenUpdate = function(p) {
		this._xscale = this._yscale=p;
	};
	animate(mc);
	//Usando o método push do array mcs.
	mcs.push(mc);
}
function animate(mc:MovieClip):Void {
	mc.tween = new Tween(mc, 0, 100, 350);
	mc.onTweenEnd = function(p):Void  {
		this.onTweenUpdate(p);
		carregarFoto(this.url_fotop, this.foto);
		i++, coluna++;
		//E na condicional if, verifica duas condições:
		// - Se a variável coluna é maior ou igual a variável qc;
		// - Se a variável linha é maior ou igual a variável ql;
		//Caso a condição seja verdadeira, damos um return para sair da função.
		if (coluna>=qc && linha>=ql) {
			return;
		}
		//Na condicional a seguir, verifica também duas condições:
		// - Se a variável coluna é igual a variável qc;
		// - Se a variável linha é menor que a variável ql;
		//Caso a condição seja verdadeira, atribua zero à variável coluna e incremente a variável linha.
		if (coluna == qc && linha<ql) {
			coluna = 0;
			linha++;
		}
		if (i<len) {
			preencher(coluna, linha);
		}
	};
}
function carregarFoto(url:String, target:MovieClip):Void {
	carregar.loadClip(url, target);
}
// A função removeAll será responsável por remover todos os movieclips das fotos existentes.
// Quando ocorrer a mudança de uma página para a outra
function removeAll():Void {
	// Crie um loop for, para remover os movieclips das fotos da página anterior.
	for (var i:Number = 0, len = mcs.length; i<len; i++) {
		// Use o método removeMovieClip para retirar os MovieClips das fotos pequenas
		mcs[i].removeMovieClip();
	}
	//Zere o array mcs para gravar as próximas imagens a partir do indice 0 do array;
	mcs = [];
}
//A função ativar é responsável por deixar o MovieClip da página que foi clicado desabilitado, e habilitar todos os outros.
function ativar(num:Number):Void {
	// O loop for abaixo vai servir para definir quais dos MovieClips da paginação vão ficar habilitados, e o que ficará desabilitado.
	for (var i = 0; i<qp; i++) {
		//Aqui a condicional if verifica se num (argumento da função) é diferente de “i”
		//Caso a condicional seja verdadeira, ele habilita o MovieClip, e o remete para o frame 1
		//Caso contrário (que seria o else), ele define a propriedade enabled do movieclip como false, e o remete para o frame 3
		if (num != i) {
			// Use o método gotoAndStop, e envie o movieclip para o frame 1
			eval("paginacao.p"+i).gotoAndStop(1);
			// Defina a propriedade enabled do movieclip como true
			eval("paginacao.p"+i).enabled = true;
		} else {
			// Use o método gotoAndStop, e envie o movieclip para o frame 3
			eval("paginacao.p"+i).gotoAndStop(3);
			// Defina a propriedade enabled do movieclip como false;
			eval("paginacao.p"+i).enabled = false;
		}
	}
}
/* Função criaPaginacao - é a função responsável por exibir a quantidade de páginas de acordo com o cálculo que vamos criar. Essa função recebe como argumento um número que corresponde à quantidade de imagens.
*/
function criaPaginacao(qtd):Void {
	//A variável len vai receber o argumento qtd, que contém a quantidade de imagens.
	var len = qtd;
	//Agora, vamos fazer o cálculo para ver quantas páginas serão necessárias para a quantidade
	//de imagens que existem no XML, e atribuir esse valor à variável qp (quantidade de páginas).
	for (var paginas:Number = 0, total = qp; paginas<total; paginas++) {
		// Use o método attachMovie para:
		var pg = paginacao.attachMovie("pag_mc", "p"+paginas, paginacao.getNextHighestDepth());
		//Faça o posicionamento dos MovieClips da paginação
		pg._x = Math.round(paginas*pg._width+paginas);
		// Aqui faça o cálculo da variável páginas vezes a quantidade de colunas vezes a quantidades de linhas. Isso vai retornar
		// a partir do ponto do XML em que as fotos devem ser carregadas.
		pg.idpag = paginas*(qc*ql);
		// Exiba no campo de texto de cada MovieClip da paginação o número da página.
		//Observe que usei a variável paginas+1, porque começamos a contar a partir da página 0.
		pg.n_txt.text = paginas+1;
		//Defina o evento onRollOver para quando o usuário passar o
		//mouse em cima de qualquer MovieClip das páginas. O evento envia o MovieClip para o frame 2.
		pg.onRollOver = function() {
			//Use o método gotoAndStop, para remeter o movieclip para o frame 2.
			this.gotoAndStop(2);
		};
		//A variável atual é definida em cada movieclip durante o loop for.
		//Atribua a ela o valor da variável páginas. Vamos usar essa variável mais adiante para executar a função ativar.
		pg.atual = paginas;
		//No evento de onRollOut e onReleaseOutside dos MovieClips das páginas, mande o MovieClip para o frame 1.
		pg.onRollOut = pg.onReleaseOutside=function () {
			//Use o método gotoAndStop, enviando o movieclip para o frame 1.
			this.gotoAndStop(1);
		};
		pg.onRelease = function() {
			//Execute a função removeAll para retirar todas as imagens existentes, quando a troca 
			// de uma página para outra ocorrer.
			removeAll();
			//Execute a função ativar, passando como argumento da função a variável atual, 
			//juntamente com o escopo this. 
			ativar(this.atual);
			//Agora atribua o mesmo valor da variável “idpag” para a variável “i”;
			i = this.idpag;
			// Atribua o valor da variável coluna como sendo 0, para que na troca de páginas, 
			// o posicionamento das imagens sempre seja na coluna 0.
			coluna = 0;
			// Faça a mesma coisa para linha, pois isso irá fazer com que as imagens sempre começem 
			// na posição 0 .
			linha = 0;
			//Execute a função preencher, passando as variáveis linha e coluna nos argumentos dessa função.
			preencher(coluna, linha);
		};
	}
	//Execute o evento de onRelease do MovieClip da página 1, e assim a página 1 vai ficar marcada.
	paginacao.p0.onRelease();
}

 

Valeu mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu cód. altere a função "preencher" conforme abaixo:

function preencher(coluna:Number, linha:Number):Void {
	var mc:MovieClip = container.attachMovie("item_mc", "i["+coluna+"]["+linha+"]", container.getNextHighestDepth());
	mc._x = Math.round(coluna*mc._width+coluna);
	mc._y = Math.round(linha*mc._height+linha);
	mc._xscale = mc._yscale=0;
	mc.url_fotop = dados[i].attributes.fp;
	mc.url_fotog = dados[i].attributes.fg;
	mc.url_desc = dados[i].attributes.legenda;
	mc.onRelease = function() {
		carregarFoto(this.url_fotog, fotog);
		texto.text = mc.url_desc;
	};
	mc.onTweenUpdate = function(p) {
		this._xscale = this._yscale=p;
	};
	animate(mc);
	//Usando o método push do array mcs.
	mcs.push(mc);
}

Abs.

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.