Ir para conteúdo

POWERED BY:

Arquivado

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

eronventer

Duplicação e Posição de Objetos

Recommended Posts

Ae galerinha!!!

 

Seguinte, preciso de um help para posicionar elementos duplicados de uma

forma diferente....

 

São 31 objetos posicionados em 8 colunas, porém quero que a 1ª linha

esteja posicionado diferente pq antes da duplicação dos objetos eu tenho

o titulo da sessão...

 

Exemplo:

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

:blink:

 

simples!

 

é só fazer ele pular o primeiro! :P

 

a dúvida era essa ou você tem um código que duplica e posiciona os 31 objetos em 8 colunas e está com dúvidas em como fazer ele pular o primeiro e vai postar o código pra gente dar uma olhada e poder te ajudar?

 

^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso, preciso que ele pule o primeiro mesmo....mas não to raciocinando uma maneira de fazer...

Segue o codigo atual que não faz pular o primeiro...

 

function initGaleria()
{
	for (thumb in this)
	{
		this[thumb].removeMovieClip();
	}

	thumb._x = 0;
	thumb._y = 0;

	for (i=0; i<_root.quadros.length; i++)
	{	
		thumb.duplicateMovieClip("btn"+i, i);
		this["btn"+i].id = _root.quadros[i].id;
		this["btn"+i].nome = _root.quadros[i].nome;
		this["btn"+i].tamanho = _root.quadros[i].tamanho;
		this["btn"+i].foto = _root.quadros[i].foto;
		this["btn"+i].fotografo = _root.quadros[i].fotografo;
		
		if (i%8 == 7)
		{
			thumb._x = 0;
			thumb._y = this["btn"+i]._y+this["btn"+i]._height-3;
		}
		else
		{
			thumb._x = this["btn"+i]._x+this["btn"+i]._width+5;
		}

		this["btn"+i].onRelease = function()
		{
			//
		};

		thumb._visible = false;
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa, melherou! :D

 

bem, uma lógica que pensei foi a seguinte:

 

//x e y onde os itens começaram a ser exibidos....
xstart = 60;
yxstart = 10;
//largura e altura do item mais a distância x e y entre eles...
distx = 60;
disty = 60;
//apenas setando o valor inicial do x e y...
xp = xstart;
yp = yxstart;
function teste() {
	for (i=1; i<=31; i++) {
		duplicateMovieClip(thumb, "item_mc"+i, i);
		var item_mc:MovieClip = this["item_mc"+i];
		//se for a primeira coluna
		if (i<=7) {
			if (i%8 == 0) {
				xp = xstart;
				yp = yp+disty;
			} else {
				xp = xp+distx;
			}
		}
		//se for o primeiro item  
		if (i == 1) {
			xp = xstart+distx;
		}
		//sequencia normal   
		if (i>7) {
			if (i%8 == 0) {
				xp = xstart;
				yp = yp+disty;
			} else {
				xp = xp+distx;
			}
		}
		//seta as posições  
		item_mc._x = xp;
		item_mc._y = yp;
		//apenas para informar o número do item...
		item_mc.n.text = i;
	}
}
teste();

com este código se chega ao seguinte: SWF

se quiser dar uma olhada no FLA

 

aí é só aplicar a lógica no seu código q teoricamente fica lindo, qualquer coisa posta aí!

 

abraços; http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saquei a ideia, perfeito, muito obrigado...

 

Agora estou com outro probleminha, estou adaptando uma paginação, pois

poderá ocorrer de ter mais de 31 itens...e está acontecendo de por exemplo,

se eu tiver 41 itens, a primeira pagina esta td posicionado corretamente, já

na pagina seguinte, fica desalinhado....segue o codigo:

 

Função que monta a galeria:

function initGaleria(pg, qtde)
{
	for (thumb in galeria)
	{
		galeria[thumb].removeMovieClip();
	}	
	
	//Posição inicial do objeto
	var yItemStart:Number = 0;
	var xItemStart:Number = 0;

	//largura e altura do item mais a distância x e y entre eles...
	var distX:Number = 115;
	var distY:Number = 96;

	//apenas setando o valor inicial do x e y...
	xP = xItemStart;
	yP = yItemStart;

	total_matriz = (qtde == null) ? _root.quadros.length : qtde;
	num_paginas = Math.ceil(total_matriz/31);
	num_quadros = 0;

	if (total_matriz>31)
	{
		rs_fim = 31;
		galeria.btnAvanca.enabled = true;
	}
	else
	{
		rs_fim = total_matriz;
		galeria.btnAvanca.enabled = false;
	}
	
	if (pg != "" || pg != undefined)
	{
		rs_ini = (pg*31-31)+1;

		if (pg<num_paginas)
		{
			rs_fim = pg*31;
		}
		else
		{
			rs_fim = total_matriz;
		}
	}
	pag_atual = pg;

	if (num_paginas>1)
	{
		galeria.btnAvanca.enabled = true;
	}
	if (num_paginas == 1)
	{
		galeria.btnVolta.enabled = false;
	}

	for (i=rs_ini; i<=rs_fim; i++)
	{
		if (qtde == null)
		{
			itemId = i;
		}
		else
		{
			itemId = monta_busca[i];
		}
		galeria.thumb.duplicateMovieClip("btn"+i,i);
		var quadrinho:MovieClip = galeria["btn"+i];

		quadrinho.id = _root.quadros[itemId].id;
		quadrinho.nome = _root.quadros[itemId].nome;
		quadrinho.tamanho = _root.quadros[itemId].tamanho;
		quadrinho.foto = _root.quadros[itemId].foto;
		quadrinho.fotografo = _root.quadros[itemId].fotografo;
		quadrinho.pos = itemId;

		//se for a primeira coluna
		if (i<=7)
		{
			if (i%8 == 0)
			{
				xP = xItemStart;
				yP = yP+distY;
			}
			else
			{
				xP = xP+distX;
			}
		}
		
		//se for o primeiro item   
		if (i == 1)
		{
			xP = xItemStart+distX;
		}
		
		//sequencia normal	
		if (i>7)
		{
			if (i%8 == 0)
			{
				xP = xItemStart;
				yP = yP+distY;
			}
			else
			{
				xP = xP+distX;
			}
		}
		//seta as posições 
		quadrinho._x = xP;
		quadrinho._y = yP;

		quadrinho.onRelease = function()
		{
			trace("CLIQUE");
		};

		num_quadros++;
	}
	
	galeria.thumb._visible = false;
}

Botão Avançar:

_parent.btnVolta.enabled = true;
_parent._parent.initGaleria(_parent._parent.pag_atual+1);
	
if (_parent._parent.pag_atual == _parent._parent.num_paginas)
{
	_parent.btnAvanca.enabled = false;
}

Botão Voltar:

_parent.btnAvanca.enabled = true;
_parent._parent.initGaleria(_parent._parent.pag_atual-1);

if (_parent._parent.pag_atual == 1)
{
	_parent.btnVolta.enabled = false;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que acontece é que você está alterando o valor da variável i para pegar os próximos dados...

 

aí quando chega no if (i == 1), ela nunca será 1 depois da primeira página, a msm coisa para os próximos dois if...

 

faz assim:

 

function initGaleria(pg, qtde) {

	//reinicia a variável de alinhamento	  
	vP = 1;

	for (i=rs_ini; i<=rs_fim; i++) {

		//...

		//se for a primeira coluna
		if (vP<=7) {
			if (vP%8 == 0) {
				xP = xItemStart;
				yP = yP+distY;
			} else {
				xP = xP+distX;
			}
		}
		//se for o primeiro item	   
		if (vP == 1) {
			xP = xItemStart+distX;
		}
		//sequencia normal	
		if (vP>7) {
			if (vP%8 == 0) {
				xP = xItemStart;
				yP = yP+distY;
			} else {
				xP = xP+distX;
			}
		}
		//seta as posições	 
		quadrinho._x = xP;
		quadrinho._y = yP;

		vP++;

		//...

	}
}

Aí sempre que você chamar a função, ele vai ficar com a i normal e setar a vP como 1 e ir somando até terminar o for e na próxima ele começa do 1 de novo, assim sempre dará certo nas condições...

 

chega o drops; http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vivendo e aprendendo!!

 

Valeu mesmo gbs....agora to com outro probleminha, na minha função eu faço um "for in" para

eliminar os objetos sempre que chamar a função, porém ele continua me criando um objeto vazio no

final da pagina....

 

Até coloquei um "galeria.thumb._visible = false;" para ver se resolvia mas não adiantou nada...

Porque pode estar acontecendo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos pensar um pouquinho...

 

duplicateMovieClip( target , newname , depth )

 

entendente o código...

 

galeria.thumb.duplicateMovieClip("btn"+i,i);
var quadrinho:MovieClip = galeria["btn"+i];

você cria um novo movie clip chamado por exemplo btn1, que teve como origem o movieclip galeria.thumb...

 

galeria.thumb é apenas um modelo, então você oculta ele, como você já está fazendo:

 

galeria.thumb._visible = false;

aí eu acho que você tenta remover todos os existentes antes de continuar:

 

for (thumb in galeria) {
		galeria[thumb].removeMovieClip();
}

mas você está duplicando os moviecplis com os nomes... galeria["btn"+i], ou seja: btn1, btn2, btn3, btn cachorro, e assim por diante...

 

não estou vendo aonde você está apagando os btn1, btn2, btn3, btn32354684, btndog...

 

faz um for pra rasgar fogo neles...

 

for (i=rs_ini; i<=rs_fim; i++) {
		var quadrinho:MovieClip = galeria["btn"+i];
		quadrinho.removeMovieClip();
		//ou
		quadrinho._visible = false;
}

mas faz isso ao trocar de página, antes de setar os novos valores para rs_ini e rs_fim, tem q pegar os que estão sendo usados na página atual antes de trocar...

 

;)

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.