Ir para conteúdo

POWERED BY:

Arquivado

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

Luiz Henrique

[Resolvido] Problemas com verificação em array

Recommended Posts

Olá pessoas, estou a horas tentando resolver o problema mas não estou encontrando forma de fazer isto;

 

Tenho uma galeria de imagens da seguinte forma: categoria (paisagem, ilustração...) se eu seleciono paisagem, ela me apresenta uma imagem base para paisagem e mais 10 miniaturas, quando eu clico na em alguma miniatura a imagem base é acrecentada a um favoritos que mostra a imagem base reduzida, e acrecentou ao favoritos da categoria paisagem a miniatura selecionada, se eu clicar em outra miniatura da mesma categoria o sistema acrescenta mais a miniatura clicada ao favoritos da categoria, se eu mudar de categoria e clicar em alguma miniatura ele cria mais um grupo no favoritos com as miniaturas selecionadas de cada categoria, ou seja eu vou criando grupos de imagens no favoritos.

 

O problema é que quando eu seleciono 2 miniaturas por exemplo da categoria ele cria 2 vezes o mesmo grupo, e não poderia o sistema deveria estar acrecentando as miniaturas ao grupo existente e só criar outro grupo caso ele não exista ainda.

 

estou tentando da seguinte forma:

$i=$t=0;
var code:Array = new Array();
function montaFav(ref) {
   // ref é a referencia da imagem, sempre que eu clicar em alguma minatura da mesma categoria ref vai ser sempre o mesmo, se eu cliquei em 8 miniaturas da categoria paisagem ref vai vir sempre igual. 
   for ($c=0; $c<code.length; $c++) { // conto quantos registros tem o array, tem um bug aqui eu sei é proposital, só funciona a partir do 1º clique mas isto é simples de resolver.
      if (code[$c] != ref) {
      // verifico se alguma linha do array é diferente de ref ou seja se o grupo da miniatura clicada ainda não existir ele executa a função cria e duplica a imagem base reduzida do grupo, aqui está o problema, depoois falo.
	cria();
      }
   }
   code[$i] = ref;
   $i++;
   function cria() {
        // aqui é tudo simples e sem problemas
	duplicateMovieClip("img", "img"+$t, $t);
	eval("img"+$t).imagem.loadMovie("path/"+ref+".jpg");
	eval("img"+$t)._x = $t*85;
	$t++;
   }
}

O problema é ali:

if (code[$c] != ref) {

cria();

}

como podem ver no código coloquei a variável do array depois de terminar o for

code[$i] = ref;

porque se eu colocar antes a condição if nunca executaria pois ele sempre vai encontrar a referncia no array, então coloquei abaixo assim quando clico na miniatura ela ainda não está dentro do array somente após o 1º clique.

Aquestão é que não funciona o if ele funciona a 1ª vez depois não porque como estou verificando registro por registro do array a verificação encontra vários registros que não são iguais a referência passada e com isto ele executa a função cria, já fiz muita coisa aqui já não sei mais o que tentar, agradeço qualquer dica para resolver o problema.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nao entendi aquela linha:

code[$i] = ref;

$i++;

 

Tipo quem é i? O i desse jeito ai da pau, porque ele nao sabe quem eh i? não teria que ta dentro do for isso?

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não não, o $i inicia com 0 já, é um array, code[0] = ref;

No for usei o $c, Mas consegui resolver, pensar de madrugada não é fácil, a solução é bem obvia:

 

function montaFav(ref) {
   temp = false;
   for ($c=0; $c<code.length; $c++) {
      if (code[$c] == ref) {
         temp = true;
      }
   }
   if (!temp) {
      cria();
   }
}

Muito simples, crio uma var temp que ao executar a função ela inicia com valor false, caso na verificação do array linha por linha o sistema encontre dados iguais a var passa ater o valor true, depois é simples se a variável continuar false executa a função cria(), caso contrário não faz nada.

 

Resolvido, Obrigado.

 

 

Eu nao entendi aquela linha:

code[$i] = ref;

$i++;

 

Tipo quem é i? O i desse jeito ai da pau, porque ele nao sabe quem eh i? não teria que ta dentro do for isso?

 

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.