linoart 0 Denunciar post Postado Janeiro 7, 2010 Pessoal, estou fazendo uma galeria de imagens onde tem nove thumbs onde é carregada uma imagem dentra de cada thumb. Nessa galeria uma mesma imagem pode ser carregada em 3 thumbs por exemplo. O problema é que a imagem que foi carregada na thumb não condiz com a imagem que ele deveria carregar. Deixo embaixo o código pra darem uma olhada: aThumbsObj = [conjThumbs.thumb0, conjThumbs.thumb1, conjThumbs.thumb2, conjThumbs.thumb3, conjThumbs.thumb4, conjThumbs.thumb5, conjThumbs.thumb6, conjThumbs.thumb7, conjThumbs.thumb8]; aImagensThumb = new Array("0.jpg", "1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg", "6.jpg", "7.jpg", "8.jpg"); aImagensGrande = new Array("img0.jpg", "img1.jpg", "img2.jpg", "img3.jpg", "img4.jpg", "img5.jpg", "img6.jpg", "img7.jpg", "img8.jpg"); var i:int = 0; while ( i < aThumbsObj.length) { randomImagens = Math.random() * aImagensThumb.length; trace(randomImagens) loadThumb = new Loader(); //aThumbsObj[i].addChild(loadThumb); loadThumb.name = "load" + i; // Pego a imagem que cada thumb recebeu e jogo numa nova array, que será usada na função clicouThumb // para saber qual imagem GRANDE será carregará quando clicar numa determinada thumbs. aImgGrandeOrdem.push(randomImagens); trace("imagem thumb é: " + randomImagens + " " + "e thumbObj dela é " + aThumbsObj[i].name); loadThumb.load(new URLRequest("../img/thumbs/" + aImagensThumb[randomImagens])); loadThumb.contentLoaderInfo.addEventListener(Event.COMPLETE, carregaImagemThumb, false, 0, true); i++; } public function carregaImagemThumb(evt:Event):void { if(aThumbsObj[num].numChildren ==1) // numCrildren == 1 pq existe um shape dentro da thumb. { var mc:Object = Object(loadThumb.content); aThumbsObj[num].addChild(evt.target.content); aThumbsObj[num].buttonMode = true; aThumbsObj[num].addEventListener(MouseEvent.CLICK, clicouThumb, false, 0, true); num++; trace(num) if(num ==9) { loadThumb.removeEventListener(Event.COMPLETE, carregaImagemThumb); } } } Abraços, Compartilhar este post Link para o post Compartilhar em outros sites
Foxn 3 Denunciar post Postado Janeiro 9, 2010 Você está carregando todas as imagens de uma só vez, e umas são mais pesadas que as outras, por isso elas não vão carregar na ordem que você solicitou, então sua variável "num" será imprecisa. Então você pode filtrar o id do objeto baseado no nome que você deu a ele. Ficaria assim: function carregaImagemThumb (evt:Event):void { // Resgatando o indice do objeto que terminou de ser carregado var $id:int = int(String(evt.target.name).substring(String("load").length)); // Agora que você tem o id real, pode seguir com sua lógica. if (aThumbsObj[$id].numChildren == 1) { var mc:Object = Object(loadThumb.content); aThumbsObj[$id].addChild (evt.target.content); aThumbsObj[$id].buttonMode = true; aThumbsObj[$id].addEventListener (MouseEvent.CLICK, clicouThumb, false, 0, true); } // Neste ponto você poderia remover o evento de qualquer forma, em cada um deles e não somente no ultimo evt.target.removeEventListener (Event.COMPLETE, carregaImagemThumb); } Acho que isso pode dar certo. Outro detalhe é que você está sorteando as imagens que vão carregar, assim, nada impede da mesma imagem ser carregada em outro thumb. Att, Compartilhar este post Link para o post Compartilhar em outros sites
linoart 0 Denunciar post Postado Janeiro 9, 2010 Valeu Foxn, mas não funcionou. Dei um trace na variável $id e só está retornando '8'. E as imagens só estão sendo adicionadas na thumb8. Não sei se é importante notar mas evt.target.name não funcionou pois acusa que a propriedade name não existe em LoaderInfo. Então coloque loadThumb.name. Abraços, Compartilhar este post Link para o post Compartilhar em outros sites
Foxn 3 Denunciar post Postado Janeiro 9, 2010 Valeu Foxn, mas não funcionou. Dei um trace na variável $id e só está retornando '8'. E as imagens só estão sendo adicionadas na thumb8. Não sei se é importante notar mas evt.target.name não funcionou pois acusa que a propriedade name não existe em LoaderInfo. Então coloque loadThumb.name. Abraços, Verdade, ficou faltando um "content.parent". var $id:int = int(String(evt.target.content.parent.name).substring(String("load").length)); De qualquer forma, segue um exemplo funcionando: var carregado:Function = function($evento:Event):void { var $id:int = int(String($evento.target.content.parent.name).substring(String("imagem").length)); $evento.target.content.y = height; addChild($evento.target.content); $evento.target.removeEventListener(Event.COMPLETE,carregado); trace($id); } var imagem:Loader // Primeira imagem imagem = new Loader(); imagem.name = "imagem1"; imagem.contentLoaderInfo.addEventListener(Event.COMPLETE,carregado); imagem.load(new URLRequest("http://static.imasters.com.br/img/bd/2332.jpg")); // Segunda imagem imagem = new Loader(); imagem.name = "imagem2"; imagem.contentLoaderInfo.addEventListener(Event.COMPLETE,carregado); imagem.load(new URLRequest("http://static.imasters.com.br/img/bd/2333.jpg")); // Terceira imagem imagem = new Loader(); imagem.name = "imagem3"; imagem.contentLoaderInfo.addEventListener(Event.COMPLETE,carregado); imagem.load(new URLRequest("http://static.imasters.com.br//imasters/img/topo/logo.png")); Compartilhar este post Link para o post Compartilhar em outros sites
linoart 0 Denunciar post Postado Janeiro 11, 2010 É isso ai, Foxn. Foi certinho. Obrigado!! Agora fiquei só com dúvida na lógica, pq eu dei um trace na var $id e sempre mostra 6,0,2,7,1,8,4,3,5 nessa ordem. Não deveria mostrar randomicamente, já que é as imagens são escolhidas com random? Abraços, Compartilhar este post Link para o post Compartilhar em outros sites