helentata 0 Denunciar post Postado Maio 10, 2010 Boa tarde, Sou iniciante em AS e uso o 2 ainda (não me chinguem). Preciso fazer uma galeria de imagens com xml que tenha legenda e thmbs e quando clica em cima abre a foto grande, até aí tudo bem, baixei uma galeria free e adaptei pra o meu uso. Agoora eu preciso fazer paginação, aí que está o problema, eu tenho uma função que exibe os intervalos e coloca eles na tela. Ex: exibe os indices de 0 à8, ou de 9 à 17. Fiz um botão "next" que teoricamente faria a paginação, mas ele não está chamando a função :T Acho que me enrolei pra falar, vou colocar o código pra ver se melhora. import mx.transitions.Tween; import mx.transitions.easing.*; var idAtual:Number = new Number(); var space:Number = 10; var mclImg:MovieClipLoader = new MovieClipLoader(); var lstImg:Object = new Object(); var y_img:Number = 60; var quebra_linha:Number = 0; var stage_w:Number = 925; var stage_y:Number = 346; var pagina:Number = 1; /////////////////////// var xml: XML = new XML (); xml.load("portifolio.xml"); xml.ignoreWhite = true; System.useCodepage = true; function carrega (){ xml.onLoad = function() { fn = xml.firstChild.childNodes; total = fn.length; //paginacao var total_fotos:Number = total - 1; var result_pagina:Number = 9; var total_paginas:Number = Math.ceil(total_fotos/result_pagina); trace("total_paginas"+total_paginas); var min:Number = ((pagina * result_pagina) - result_pagina); trace("pagina="+pagina+",total de fotos="+total_fotos+",total de paginas="+total_paginas+", minimo="+min); for (var j:Number = min; j < (result_pagina + min) && j <= total_fotos; j++) { var btn:MovieClip = holder_portifolio.attachMovie("miniaturas", "miniatura"+j, j); quebra_linha = quebra_linha + 1; trace(quebra_linha); if(j == 0){ quebra_linha = 0; }else if (j% 3 == 0){ y_img = y_img +70; quebra_linha = 0; } btn._y= y_img; btn._x = 80 + (btn._width+space)*quebra_linha; btn.id = j; btn.onRelease = function() { loadImg(this.id); }; mclThumb.loadClip(fn[j].attributes.mini,btn.foto); holder_portifolio["miniatura"+j].texto_pt.text = xml.childNodes[0].childNodes[j].attributes.legenda ; holder_portifolio["miniatura"+j].load_thumb.loadMovie(xml.childNodes[0].childNodes[j].attributes.mini) ; } }; } function loadImg(id:Number) { idAtual = id; mclImg.loadClip(fn[id].attributes.imagem,holder_img); } lstImg.onLoadInit = function(holder_img:MovieClip) { holder_img._x = (stage_w-holder_img._width)/2; holder_img._y = (stage_y-holder_img._height)/2; holder_img.onRelease = function (){ mclImg.unloadClip(holder_img); } } mclImg.addListener(lstImg); carrega(); bo_next.onRelease = function(){ if (pagina <= total_paginas){ pagina = pagina + 1; trace ("pagina="+pagina); carrega(); } } Help me? Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Maio 11, 2010 Oi Helen, Além das coisas que você citou, tem mais ainda que se deve corrigir pelo o que ví no seu código. A primeira coisa que se deve fazer quando vai carregar thumbs em um container (movieclip) é verificar se o mesmo está vazio. Pois se você exibe 9 thumbs por páginas e tem por exemplo 12 thumbs para mostrar, quando você ir para os próximos 3, ele vai apagar os 3 primeiros da tela e irá mostrar os thumbs 9, 10, 11, 3, 4, 5... Então é legal fazer uma função que varre o conteudo do holder_portifolio e apaga todos os movieclips que tiver dentro antes de colocar os novos. Quando você for fazer paginação, você pode usar o mod (%) para pegar quantas páginas você terá na paginação e quantos thumbs exibirá na última, por exemplo: Você tem 30 thumbs, pra saber quantas páginas precisaria colocar: paginas = int(30 / 9); // retorna as 3 páginas if(paginas % 9 != 0){ paginas ++; } Isso verifica se o resultado da divisão dos thumbs pelo total exibido por página é igual a zero, se for, significa que não precisa de paginação, se ele for diferente de zero, adiciona mais um botão a paginação. Agora que você ja tem quantas páginas você precisa, você faz uma conta de inicio para colcoar os thumbs, que seria pagina * id, e dentro do for você só verifica se está na ultima página ou não, se estiver na ultima página você usa o mod para colocar os thumbs e se não estiver, você manda colocar o tanto por página que setou. Para o botão de next você só compara se a pagian atual é igual ao total de paginas, como você ja fez, agora é corrigir a função carrega implementando essa variavel de pagina atual. Compartilhar este post Link para o post Compartilhar em outros sites
helentata 0 Denunciar post Postado Maio 11, 2010 Oi Helen, Além das coisas que você citou, tem mais ainda que se deve corrigir pelo o que ví no seu código. A primeira coisa que se deve fazer quando vai carregar thumbs em um container (movieclip) é verificar se o mesmo está vazio. Pois se você exibe 9 thumbs por páginas e tem por exemplo 12 thumbs para mostrar, quando você ir para os próximos 3, ele vai apagar os 3 primeiros da tela e irá mostrar os thumbs 9, 10, 11, 3, 4, 5... Então é legal fazer uma função que varre o conteudo do holder_portifolio e apaga todos os movieclips que tiver dentro antes de colocar os novos. Quando você for fazer paginação, você pode usar o mod (%) para pegar quantas páginas você terá na paginação e quantos thumbs exibirá na última, por exemplo: Você tem 30 thumbs, pra saber quantas páginas precisaria colocar: paginas = int(30 / 9); // retorna as 3 páginas if(paginas % 9 != 0){ paginas ++; } Isso verifica se o resultado da divisão dos thumbs pelo total exibido por página é igual a zero, se for, significa que não precisa de paginação, se ele for diferente de zero, adiciona mais um botão a paginação. Agora que você ja tem quantas páginas você precisa, você faz uma conta de inicio para colcoar os thumbs, que seria pagina * id, e dentro do for você só verifica se está na ultima página ou não, se estiver na ultima página você usa o mod para colocar os thumbs e se não estiver, você manda colocar o tanto por página que setou. Para o botão de next você só compara se a pagian atual é igual ao total de paginas, como você ja fez, agora é corrigir a função carrega implementando essa variavel de pagina atual. Intendii, vou corrigir essas coisas. Mas o que está acontecendo, é que o meu botão, que eu usei pra paginação não está chamando a função carrega, está acontecendo isso por causa desses erros que você falou ? No caso, eu não vou ter botoes de páginas Ex 1,2,3. Só tenho botão próxima e anterior. Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Maio 11, 2010 Acho que não, você ja deu um trace do pagina e total_pagina dentro do botão? porque o total_pagina é uma variavel da função, testa dessa forma: bo_next.onRelease = function(){ trace("pagina: " + pagina); trace("total: " + total_paginas) if (pagina <= total_paginas){ pagina = pagina + 1; trace ("pagina="+pagina); carrega(); } } Assim ja da pra verificar se o problema está no seu if, eu não acho que o problema seja do clique do botão não achar a função. Compartilhar este post Link para o post Compartilhar em outros sites