Ir para conteúdo

POWERED BY:

Arquivado

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

helentata

Botão nao está chamando função

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.