Ir para conteúdo

POWERED BY:

Arquivado

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

LucaSamurai Jack

[Resolvido] como usar estes Mcs que sao botoes?

Recommended Posts

Olha só, eu sempre pesquiso muito ate conseguir o que eu quero, mas tem hora que nao consigo nada :(

 

eu to fazendo uma galeria de imagens meio complexa via xml. No nivel principal existem 9 mcs. cada um representa uma tumbnail de um aimagem. quando se clica em uma delas, cada uma se torna uma mini galeria com mais imagens dentro, e possuem botoes para passar de galeria em galeria. E outros botoes pra passar as imagens dentro de uma galeria.

 

pra navegar de uma galeria para outra eu resolvi, o problema esta na hora de pssar de imagem para imagem.

tenho um codigo que cria os tumbnails via xml, mas quando se clica neles eu nao consigo deixar apenas um "ativado"

 

cada botao eh um mc com um outro "mc_alvo" dentro onde eh carregado o tumbnail. na linha onde esta o botao eu pus isso:

pequeno.onPress = function(){
	this._alpha = 50;
};

pequeno eh a instancia e o nome do mc_botao.

 

quando eu clico no botao ele funciona, mas eu queria que quando clicasse nos outros botaos apenas um ficasse diferente e os outros voltassem ao alfa 100%

o detalhe eh que estes botoes podem ser infinitos ja que eles sao criados de acordo com o numero de imagens no xml.

o codigo que cria a funcao deste botao eh este:

 

/* Função monta pequeno */
function montaPequeno() {
	/* Variável para posicionar o MovieClip */
	var inicio = 0;
	/* Criamos um for para cada item do XML */
	for (var i = 0; i<total; i++) {
		/* Chamamos o MovieClip pequeno */
		var mc:MovieClip = recebe.attachMovie("pequeno", "pequeno"+i, recebe.getNextHighestDepth());
		/* Pocisionamos ele */
		mc._x = inicio*mc._width+inicio*10;
		/* Incrementamos inicio */
		inicio++;
		/* Carregamos a imagem pequena */
		pequenoMCL.loadClip(xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue,mc.alvo);
		/* Deixamos o MovieClip barra com _yscale igual a 0 */
		mc.barra._yscale = 0;
		/* Pegamos a imagem */
		mc.imagem = i;
		/* Pegamos a legenda */
		mc.legenda = i;
		/* Ao pressionar do da Imagem Pequena */
		mc.onPress = function() {
			
			
			/* Se a variável carregado for igual a true */
			if (carregado == true) {
				/* Carregamos a Imagem selecionada */
				carregaImagem(this.imagem,this.legenda);
				/* Carregado igual a falso */
				carregado = false;
				/* Apagamos o texto */
				texto.text = "";
			}
		};
	}

o primeiro codigo eu inseri neste local, mas quando aperta oos botoes todos eles vao para alfa 50 e nao sei oq fazer para voltarem ao normal apos clicar em um novo botao

 

/* Ao pressionar do da Imagem Pequena */
		mc.onPress = function() {
			this._alpha = 50;

se alguem entendeu e puder me ajudar rsrsrs eu agradeco!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu consegui ate fazer o que eu queria +- mudando uma parte do codigo para isso:

// Ao pressionar do da Imagem Pequena */
		mc.onRelease = function () {
		this._alpha = 50;
			trace("haha");

			/* Se a variável carregado for igual a true */
			if (carregado == true) {
				/* Carregamos a Imagem selecionada */
				carregaImagem(this.imagem,this.legenda);
				/* Carregado igual a falso */
				carregado = false;
				/* Apagamos o texto */
				texto.text = "";
			}
		};

		mc.onMouseUp = function() {
		this._alpha = 100
			trace("hehe");
		};
	}

mas o problema eh que com esse mouseUp quando clicar em qualquer lugar "des-seleciona" a imagem que esta selecionada...

 

eu fiz ua funcao para a segunda vez que aperta o botao, (mouseUp) para isso

/
			}
		};

		mc.onPress = function() {
		recebe._alpha = 100
			trace("hehe")
		};
	}

o trace "hehe" funciona, mas a funcao de alfa s'o eh aplicada na primeira vez que aperto o botao. depois ela para de funcionar.. alguem sabe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara e se você fizesse uma função que antes de alterar o _alpha para 50% no botão clicado, ele restaurasse todos para 100%? tipo...

 

RestauraTodos;

this._alpha = 50;

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas essa funcao teria que ser alguma acao feita pelo mouse, que foi o que eu tentei fazer...

 

Você pode usar a mesma ação do botão, mas antes de dar o tal 50% pro botão clicado você chama a função. Vamos supor que você tem 10 botões, quando você clicasse no botão 1 ele recebe 50% de alpha enquanto os outros 9 recebem 100% certo? então ficaria mais ou menos assim...

 

botao1.onRelease = function () {
resetaAlphaBotoes(); // essa função você deve criar, dentro dela teria um código para jogar TODOS os botões para 100% de alpha
botao1._alpha = 50;
}

Entendeu? Ae você partindo dessa idéia você pode criar e adaptar pra sua necessidade, talvez passar um parâmetro com o a instancia do botão clicado, ae você substitui o "botao1" pelo parâmetro... certo!?

 

Espero ter ajudado...

 

Grande abraço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verade ou eu nao sei fazer a function(), ou nao faz diferenca pq os comandos ja estarao dentro de uma function, por exemplo:

 

crio a funcao:

function restaura() {
	recebe._alpha = 100;

}
e a aplico desse jeito:

mc.onRelease = function() {
			restaura();
			this._alpha = 50;

isso eh a mesma coisa que isso:

mc.onRelease = function() {
			recebe._alpha = 100;
			this._alpha = 50;

eu ainda pus um OnPress

mc.onPress = function() {
			recebe._alpha = 200;
		};

e QUASE funcionou! acontece que quando eu clico no 2 botao, todos vao alfa 100, mas quando eu solto os 2 botoes q ja foram clicados voltam para 50; :mellow:

 

 

Acho que o maior problema eh que os botos nao sao cada um seu proprio mc, pq ai seria facil, mas todos sao um uinco mc "recebe" que Recebem o numero de imagens por xml e automaticamente criam os botoes. Talves por isso seja impossivel funcionar.

 

Mas valew Jefs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Luca, eu imaginei algo assim, vou tentar ser uma pouco mais prático... tenho 10 movieClips devidamente instanciados, certo!? então eu crio uma função simples que levará os 10 movieClips para o alpha = 100;

 

function resetaMovieClips(){
for (i=0;i<=10;i++) {
this['mc'+i]._alpha = 100;
}
}

então, toda vez que eu chamar essa função, todos os meus movieClips receberão 100 para alpha. Então no release do movieClip 5 por exemplo, eu chamo primeiramente a função e depois mando um 50 só no botão 5... assim...

 

mc5.onRelease = function {
resetaMovieClips;
mc5._alpha = 50;
}

Agora ficou claro né!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao! voce que nao entendeu! as vezes eu nao expliquei direito no comeco.

 

Acontece que os botoes nao sao "cada botao corretamente instanciados" nao estou trabalhando com varios botoes, e sim com apenas um botao.

Pra explicar melhor 'e u movie clip que le um xml, por exmeplo:

 

<editorial>
<foto>
<imagemG>imgs/imagem01.jpg</imagemG>
<botao>imgs/numero_01.png</botao>
<texto>blablabla</texto>
</foto>
<foto>
<imagemG>imgs/imagem02.jpg</imagemG>
<botao>imgs/numero_02.png</botao>
<texto>blobloblo</texto>
</foto>
</editorial>

onde esta <botao> eu cooco uma imagem que eh carregada e se torna um botao. no exmplo acima irao aparecer 2 botoes. mas se forem 500 imagens irao aprecer 500 botoes. Dessa forma eh mais facil pra mim, pois eu n tenho que colocar os botoes manualmente la no fla. eu s'o abro o xml e pronto!

 

 

MAs enfim, depois de mto tempo sem poder mexer nisso dai, eu fui tentar de novo e dessa vez eu consegui!

 

Acabei pegand o seu codigo mesmo e alterando s'o THIS para o nome de um ainstancia e o mc para utra, ficando assim:

 

mc.onPress = function() {
			for (i=0; i<=10; i++) {
				recebe['pequeno'+i]._alpha = 50;
			}
			this._alpha = 100;

fica ai a solucao se alguem tiver algum problema parecido...

valew jefs!

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.