Ir para conteúdo

POWERED BY:

Arquivado

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

lowprofile

[Resolvido] [LOOP] - Usando For

Recommended Posts

Pessoal, alguem poderia me dar um help?

Seguinte, tenho um menu que carrega miniaturas de imagens baseado no meu numero de telas (_root.total_telas).

A montagem dele está abaixo:

[*]ele calcula o numero de telas de slides

[*]duplica meu MC e atribui uma instancia para cada (mc_tbn1, mc_tbn2 etc)

[*]faz o posicionamento de cada um

O problema está na ação de clique. Quando uma miniatura dessa for clicada, terá uma ação diferente que nada mais é que carregar um slide diferente do outro.

 

 

my_array = new Array();for (i=1; i<=_root.total_telas; i++) {	my_array[i] = mc_tbn.duplicateMovieClip("mc_tbn"+i, i);	my_array[i].loadMovie("imgs_slideshow/tbn"+i+".jpg",i);	my_array[i]._x = 104*i;	trace(my_array[i]);	my_array[i].onPress = function() {		txt_legenda = "testando...";	};}

Agradeço pela ajuda!

Um abraço

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que retorna aqui:

trace(my_array[i]); my_array[i].onPress = function() { txt_legenda = "testando..."; };
No seu trace o que retorna???

Ta retornando o nome do MovieClip?

 

Lembrando pra ti que ele tem que pegar um nome unico para cada botão...

Então eu faria algo do genero:

var mc:MovieClip = mc_tbn.duplicateMovieClip("mc_tbn"+i, i);
E não uma array Imagem Postada

Assim você vai ter um MC com nome diferente unico para cada vez que loopar

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que retorna aqui:

trace(my_array[i]); my_array[i].onPress = function() { txt_legenda = "testando..."; };
No seu trace o que retorna???

Ta retornando o nome do MovieClip?

 

Lembrando pra ti que ele tem que pegar um nome unico para cada botão...

Então eu faria algo do genero:

var mc:MovieClip = mc_tbn.duplicateMovieClip("mc_tbn"+i, i);
E não uma array Imagem Postada

Assim você vai ter um MC com nome diferente unico para cada vez que loopar

 

Abraços

 

 

 

 

Então cara, meu trace exibe o seguinte:

 

_level0.mc_topo.mc_tbns.mc_tbn1

_level0.mc_topo.mc_tbns.mc_tbn2

_level0.mc_topo.mc_tbns.mc_tbn3

_level0.mc_topo.mc_tbns.mc_tbn4

_level0.mc_topo.mc_tbns.mc_tbn5

_level0.mc_topo.mc_tbns.mc_tbn6

_level0.mc_topo.mc_tbns.mc_tbn7

 

Entendi, que até aqui está correto. Ele exibiu 7 botoes, porque minha variavel total_telas = 7;

 

A sugestão que voce deu, retornou a mesma coisa que: my_array = mc_tbn.duplicateMovieClip("mc_tbn"+i, i);

 

 

Vlw por enquanto. Abraços! Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom já que ta dando a mesma coisa então agora vamos para seu problema

 

Você não pode aplicar onPress em uma coisa carregada com loadMovie... você pode aplicar se for carregada com MovieClipLoader

 

Então teria que fazer algo assim:

var mcl:MovieClipLoader = new MovieClipLoader
var obj:Object = new Object();
var i:Number = new Number(1);

my_array = new Array(); 
function carrega(){
  var mc = mc_tbn.duplicateMovieClip("mc_tbn"+i, i); 
  mcl.loadClip("imgs_slideshow/tbn"+i+".jpg", mc); 
}

obj.onLoadInit = function(){ //onLoadInit o L é maiúsculo
   this._x = 104*i; 
   this.onPress = function() { 
    	txt_legenda = "testando...";
   }; 
  if(i <= _root.total_telas){
    i++;
    carrega();
  }   
}
carrega()
mcl.addListener(obj);

Isso deve resolver

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom já que ta dando a mesma coisa então agora vamos para seu problema

 

Você não pode aplicar onPress em uma coisa carregada com loadMovie... você pode aplicar se for carregada com MovieClipLoader

 

Então teria que fazer algo assim:

var mcl:MovieClipLoader = new MovieClipLoadervar obj:Object = new Object();var i:Number = new Number(1);my_array = new Array(); function carrega(){  var mc = mc_tbn.duplicateMovieClip("mc_tbn"+i, i);   mcl.loadClip("imgs_slideshow/tbn"+i+".jpg", mc); }obj.onLoadInit = function(){ //onLoadInit o L é maiúsculo   this._x = 104*i;    this.onPress = function() {     	txt_legenda = "testando...";   };   if(i <= _root.total_telas){    i++;    carrega();  }   }carrega()mcl.addListener(obj);
Isso deve resolver

 

Abraços

 

 

 

Fala cara, beleza?!

Então, testei o seu código fazendo diversos ajustes. Esse abaixo, foi o que chegou mais próximo do que eu preciso.

Seguinte:

No trace ele retorna apenas: mc_tbn1

Qdo carrego meu filme vejo a duplicação dos movies, porem eles desaparecem. Fica na tela apenas o ultimo. E ao clicar sobre ele o funcionamento está perfeito.

 

Entao, pelo que entendi, o problema está apenas no desaparecimento dos movies q sao duplicados.

 

var mcl:MovieClipLoader = new MovieClipLoader();var obj:Object = new Object();var i:Number = new Number(1);function carrega() {	var mc = mc_tbn.duplicateMovieClip("mc_tbn"+i, i);	mcl.loadClip("imgs_slideshow/tbn"+i+".jpg",mc);}obj.onLoadInit = function() {	_x = 104*i;	onPress = function () {		txt_legenda = "testando...";	};	if (i<_root.total_telas) {		i++;		carrega();	}};carrega();mcl.addListener(obj);trace("mc_tbn"+i);

Um abraço!

Imagem Postada

 

Mais uma observação: na verdade os MCs não desaparecem e sim ficam sobrepostos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se os MCs significa que você removeu o this._x que era quem fazia um X diferente para cada um deles Imagem Postada

 

Se quiser usar array para saber qual MC pode tbm

 

Abraços

Então, eu disse que estão desaparecendo, mas na verdade estão sobrepondo. Se eu deixo O This, acontece a mesma coisa.

 

Vou tentar adaptar usando o array. Vlw! Imagem Postada

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para resolver de vez seu problema faça assim:

obj.onloadInit = function(mc) {
 mc._x = 104*i;
 onPress = function () {
 txt_legenda = "testando...";
 };
 if (i<_root.total_telas) {
 i++;
 carrega();
 }
};

Isso deve resolver

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brother! Obrigado pela paciência! deu certo, segue o código para quem interessar:

 

var mcl:MovieClipLoader = new MovieClipLoader();var obj:Object = new Object();var i:Number = new Number(1);function carrega() {	var mc:MovieClip = mc_tbn.duplicateMovieClip("mc_tbn"+i, i);	mcl.loadClip("imgs_slideshow/tbn"+i+".png",mc);}obj.onloadInit = function(mc) {	mc._x = 104*i;	onPress = function () {		mc_loader.loadMovie(name+no+sigla+extensao);	};	if (i<total_telas) {		i++;		carrega();	}};carrega();mcl.addListener(obj);
Abraços! Imagem Postada

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.