Ir para conteúdo

POWERED BY:

Arquivado

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

Leo KW

[Resolvido] Botões de Avançar e Retroceder imagens em galeria...

Recommended Posts

Tenho uma galeria de imagens em Flash AS2.0 + XML, e coloquei 2 botões, um de avançar as fotos e um de retroceder.

 

Até que minha lógica funcionou, mas não estou conseguindo resgatar o valor da foto atual, sempre que eu clico no botão Avançar, o flash mostra a primeira foto, porque o valor da foto atual é = 0, se eu abro a primeira foto que o valor é 0 e clico em avançar ele vai certinho, agora se eu abro a quinta foto e clico em avançar ele vai pra primeira, oque não estou conseguindo pelo jeito é resgatar o valor da foto atual que o usuário escolheu abrir, e apartir dai somar mais 1 no seu valor pra abrir a foto posterior a ela.

 

Setei a variavel var fotoAtual:Number = 0;

 

Estou errando na hora de resgatar a váriavel da foto atual em que o usuário abriu, com ctz!

 

A variavel do botão avançar é essa:

btPassar.onRelease = function() {

/* Se a variável fotoAtual for menor que o total de fotos */

if (fotoAtual<16) {

/* Incrementamos a variavel fotoAtual */

fotoAtual++;

/* Chamamos a função mostraImagem passando o parametro fotoAtual */

fotoGrande.recip.loadMovie(fotoBig[fotoAtual]);

trace(fotoAtual);

}

};

 

Abraços,

Léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

De um avariavel numérica a cada foto e ao clicar nela adicione fotoAtual = this.variavel

Oi carneirinho,

 

Desculpe minha ignorância, mas não entendi muito bem.

 

Como eu vou fazer pra dar uma variavel pra cada foto? Elas não teriam de ser dinamicas também??

 

A parte do botão pra adicionar +1 na variavel ta certa então??

 

 

Abraços,

Léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem como você postar o código que usou pra montar as fotos?

Esse é o código carneirinho,

 

stop();

setVisible();
//this.masculino._visible = false;

this.btNext_passar._visible = false;
this.btPassar._visible = false;
this.btVoltar._visible = false;
this.btfexaPic._visible = false;

stop();

var path:String = "http://www.clickbrasil.com/portifolio/";
var maxFoto:Array = new Array();
var fotoBig:Array = new Array();
var fotoThu:Array = new Array();
var titulo:Array = new Array();
var valor:Array = new Array();
var pagina:Number = 0;
var pagOld:Number = 0;
var oldMaxFoto:Number;

btOver(btPrev);
fotoGrande._visible = false;
palcoProd._alpha = 0;

//========== XML ===========================
var objXML:XML = new XML();
total = xmlNode.childNodes.length;
objXML.ignoreWhite = true;
objXML.onLoad = function(success)
{
//trace(_root.trocaTipo+" / "+tipo)
receberDados(tipo);
montarProdutos(pagina);
};
objXML.load("http://www.clickbrasil.com/portifolio/public_lifestyle.xml");

function receberDados(tipoRec:Number)
{
maxFoto[tipoRec] = objXML.firstChild.childNodes[tipoRec].childNodes.length;
//trace("maxFoto["+tipoRec+"]: "+maxFoto[tipoRec]);
for (var i:Number = 0; i < maxFoto[tipoRec]; i++)
{
	fotoBig[i] = path + objXML.firstChild.childNodes[tipoRec].childNodes[i].attributes["foto"];
	fotoThu[i] = path + objXML.firstChild.childNodes[tipoRec].childNodes[i].attributes["thumb"];
	titulo[i] = objXML.firstChild.childNodes[tipoRec].childNodes[i].attributes["titulo"];
	valor[i] = objXML.firstChild.childNodes[tipoRec].childNodes[i].attributes["valor"];
}
}

//========= Constroi Cena Produtos ==================

function montarProdutos(pagProd:Number)
{
var i:Number = pagProd * 9;
var o:Number = pagOld * 9;
for (linha = 1; linha <= 3; linha++)
{
	for (coluna = 1; coluna <= 3; coluna++)
	{
		if (i < maxFoto[tipo])
		{
			//removeMovieClip(palcoProd["mini" + (pagOld * 9 + i)]);
			removeMovieClip(palcoProd["mini" + o]);

			palcoProd.thumbMc.duplicateMovieClip("mini" + i,500 + i);
			palcoProd["mini" + i]._x = (palcoProd["mini" + i]._width * coluna) - 125;
			palcoProd["mini" + i]._y = (palcoProd["mini" + i]._height * linha) - 175;

			palcoProd["mini" + i].id = i;
			palcoProd["mini" + i].recip.loadMovie(fotoThu[i]);

			if (i == 0)
			{
				btOver(btPrev);
				btOk(btNext);
			}
			if (i == maxFoto[tipo] - 1)
			{
				btOver(btNext);
			}
		}
		else
		{
			removeMovieClip(palcoProd["mini" + (i - 9)]);
			btOver(btNext);
		}
		i++;
		o++;
	}
}
palcoProd._alpha = 100;
pagOld = pagProd;
palcoProd.thumbMc._visible = false;
}

//========== Funções ===============================

function trocaTipo(tipoBt:Number)
{
removerAntigos();
pagina = 0;
tipo = tipoBt;
receberDados(tipoBt);
montarProdutos(pagina);
fotoAtual = idFoto;
//trace(tipo);
}

function removerAntigos()
{
fotoBig = new Array();
fotoThu = new Array();
titulo = new Array();
valor = new Array();
for (i = 0; i <= maxFoto[tipo]; i++)
{
	removeMovieClip(palcoProd["mini" + (i)]);
}
if (fotoGrande.inform._visible)
{
	fecharFotoGrande();
}
}

function mostraFotoGrande(idFoto:Number)
{
fotoGrande._alpha = 100;
fotoGrande.recip._alpha = 0;
fotoGrande._visible = true;
fotoGrande.inform._visible = true;
fotoGrande.recip.loadMovie(fotoBig[idFoto]);
fotoGrande.onEnterFrame = function()
{
	var_loaded = int(fotoGrande.recip.getBytesLoaded() / fotoGrande.recip.getBytesTotal() * 100);
	if (var_loaded >= 100)
	{
		trace(idFoto);
		fotoGrande.inform.mTitulo.text = titulo[idFoto];
		fotoGrande.inform.mPreco.text = valor[idFoto];
		//fotoGrande.inform.mPreco_new.text = valor_new[idFoto];
		alphaTo(fotoGrande.recip);
		//fotoAtual.push(idFoto);
		delete fotoGrande.onEnterFrame;
	}
};
fotoGrande.bt.useHandCursor = false;
}

fotoGrande.btFecha.bt.onRelease = function()
{
fecharFotoGrande();
};

function fecharFotoGrande()
{
fotoGrande.inform._visible = false;
fotoGrande.onEnterFrame = function()
{
	fotoGrande._alpha -= 10;
	if (fotoGrande._alpha <= 0)
	{
		delete fotoGrande.onEnterFrame;
		fotoGrande._visible = false;
		fotoGrande._alpha = 0;
		fotoGrande.inform.mTitulo.text = "";
		fotoGrande.inform.mPreco.text = "";
		//fotoGrande.inform.mPreco_new.text = "";
	}
};
}
function alphaTo(mc:MovieClip)
{
mc.onEnterFrame = function()
{
	mc._alpha += 10;
	if (mc._alpha >= 100)
	{
		delete mc.onEnterFrame;
	}
};
}


btNext.bt.onRelease = function()
{
//trace(maxFoto[tipo]+" / 9 - 1 > "+pagina)
if (((maxFoto[tipo] / 9) - 1) > pagina)
{
	pagina++;
	montarProdutos(pagina);
	btOk(btPrev);
}
};

btPrev.bt.onRelease = function()
{
//if (((maxFoto[tipo] / 9) - 1) <= pagina)
if (pagina > 0)	{
	pagina--;
	montarProdutos(pagina);
	btOk(btNext);
}
};

//btPassar.onRelease = function(){
//	if (fotoAtual < 16)	{
//		++fotoAtual;
//	}
//		fotoGrande.recip.loadMovie(fotoBig[fotoAtual]);
//		trace(fotoAtual);
//};



btPassar.onRelease = function() {
     /* Se a variável fotoAtual for menor que o total de fotos */
     if (fotoAtual<16) {
     /* Incrementamos a variavel fotoAtual */
     fotoAtual++;
     /* Chamamos a função mostraImagem passando o parametro fotoAtual */
     fotoGrande.recip.loadMovie(fotoBig[fotoAtual]);
  trace(fotoAtual);
  }
};


function btOk(mcBt:MovieClip){
mcBt.gotoAndStop(1);
mcBt.bt._visible = true;
mcBt._alpha = 100;
}

function btOver(mcBt:MovieClip){
mcBt.gotoAndStop("selected");
mcBt.bt._visible = false;
mcBt._alpha = 50;
}

 

A função do botão Avançar é essa abaixo:

 

btPassar.onRelease = function() {
     /* Se a variável fotoAtual for menor que o total de fotos */
     if (fotoAtual<16) {
     /* Incrementamos a variavel fotoAtual */
     fotoAtual++;
     /* Chamamos a função mostraImagem passando o parametro fotoAtual */
     fotoGrande.recip.loadMovie(fotoBig[fotoAtual]);
  trace(fotoAtual);
  }
};

 

 

Abraços,

Léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

A Action que chama a função mostraFotoGrande() está dentro do movieclip que foi duplicado? Tem as actions ai?

Você diz a action do botão em que chama a mostraFotoGrande()?

on (release) {
_parent._parent.mostraFotoGrande(this.id);
_parent._parent.btNext._visible = false;
_parent._parent.btPrev._visible = false;
_parent._parent.btNext_passar._visible = false;
_parent._parent.palcoProd._visible = false;
_parent._parent.btfexaPic._visible = true;
_parent._parent.btPassar._visible = true;
_parent._parent.btVoltar._visible = true;
_root.mc_menu._visible = false;
_root.mc_logo._visible = false;
}

 

Eu cheguei a pensar na lógica do botão avancar, colocando mais ou menos assim:

on(release){
   if this.id<16{
   this.id++;
}
mostraFotoGrande(this.id);
trace(this.id)
}

 

mas não rolou não! Quando faço isso o (this.id) aparece no Output como undefiened.

 

 

Abraços,

Léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm o movieclip ja esta passando o id pra puxar a foto, essa parte está feita então fica mais fácil, no seu código onde está assim:

 

function mostraFotoGrande(idFoto:Number)
{
       fotoGrande._alpha = 100;

 

deixe assim:

 

function mostraFotoGrande(idFoto:Number)
{
       fotoAtual = idFoto;
       fotoGrande._alpha = 100;

 

E veja se funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm o movieclip ja esta passando o id pra puxar a foto, essa parte está feita então fica mais fácil, no seu código onde está assim:

 

function mostraFotoGrande(idFoto:Number)
{
       fotoGrande._alpha = 100;

 

deixe assim:

 

function mostraFotoGrande(idFoto:Number)
{
       fotoAtual = idFoto;
       fotoGrande._alpha = 100;

 

E veja se funciona

Boaaaaa carneirinho,

 

Então até que não tava longe do resultado, oque eu tava errando era nessa hora de receber a variavel.

 

Agora deu certissimo velho, brigadão mesmo!!!

 

Abraços,

Léo

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.