Ir para conteúdo

POWERED BY:

Arquivado

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

ricardo_mc

DuplicateMovieClip e Resize Movie

Recommended Posts

Bom, eu estava precisando de uma "luz" aki :D

 

Eu vou montar uma apresentação simples de uma Modelagem de Pastas, em que vai aparecer aquele esqueminha de pastas e subpastas e ao clicar em cada uma abre uma janela mostrando uma imagem e descrição (que eu puxo de um XML). Essa janelinha eu estou fazendo que nem um janela comum, dá pra arrastar e fechar ela.

 

Tudo isso está Ok, mas eu estou com 2 problemas.

 

Se quiserem estou colocando o .rar com os arquivos que eu estou montando. Antes que comentem, esse é apenas o modelo de testes, portanto ele está tosco mesmo, que é pra evitar trabalho desnecessário. Eu estou juntando e testando diversos códigos pra ter uma idéia de como vai ficar antes de sair fazendo a versão final.

http://rapidshare.com/files/284865065/teste.rar.html

 

Pra facilitar heis o código principal.

 

var clipe = _root.center.center_menu.clipe;
var legenda = this.center.center_menu.legenda;

// Vamos agora incluir a classe tween para aplicarmos o efeito alfa no MC
#include "lmc_tween.as"
i = 0;// declara valor inicial da variavel igual a 0
System.useCodepage = true;// habilita acentos
function alinhar() {
	clipe.tween("_x",Stage.width/2-largura/2,2,"easeElastic");// alinhar a foto ao meio do palco horizontalmente
	clipe.tween("_y",Stage.height/2-altura/2,2,"easeElastic");// alinhar a foto ao meio do palco verticalmente
	carregando.tween("_x",Stage.width/2,2,"easeElastic");// alinhar o preloader ao meio do palco horizontalmente
	carregando.tween("_y",Stage.height/2,2,"easeElastic");// alinhar o preloader ao meio do palco verticalmente
}

function carrega() {// cria a função para carregar
	clipe.loadMovie(arquivo.childNodes[0].childNodes[i].attributes.imagem);// carrega a imagem
	legenda.text = arquivo.childNodes[0].childNodes[i].attributes.legenda;// carrega a legenda
}

function preloader() {// cria a função para o preloader aparecer
	carregando.tween("_alpha",100,2,"easeElastic");
}
var arquivo:XML = new XML();// declara a variavel para ler o XML
arquivo.load("galeria.xml");// lê o arquivo.xml
arquivo.ignoreWhite = true;// ignora espaços em brancos no xml
arquivo.onLoad = function() {
	largura = arquivo.childNodes[0].childNodes[i].attributes.largura;// largura do arquivo
	altura = arquivo.childNodes[0].childNodes[i].attributes.altura;// altura do arquivo
	total = arquivo.childNodes[i].childNodes.length;// pegar quantas fotos tem
	carrega();
};

um.onRelease = function() {
	i=0;
	carrega();// carrega a foto
};

dois.onRelease = function() {
	i=0+1;
	carrega();// carrega a foto
};

tres.onRelease = function() {
	i=0+2;
	carrega();// carrega a foto
};

quatro.onRelease = function() {
	i=0+3;
	carrega();// carrega a foto
};

 

1. O primeiro problema é que ao abrir uma pasta, eu posso arrastá-la, mas se eu clicar em outra pasta (enquanto essa está aberta) o flash vai carregar o próximo conteúdo nessa mesma janela, enquanto que eu queria que abrisse em uma nova. Para não ter que fazer dezenas de janelas, eu imagino que o melhor a se usar é o duplicateMovieClip, mas eu não sei usar direito.

 

Tentei colocar o duplicate no botão dessa forma:

um.onRelease = function() {
	i=0;
	center.duplicateMovieClip(center, 2);
	carrega();// carrega a foto
};

Mas não deu certo, não apenas não funcionava, mas tbm detonava a função "startDrag" da janela.

 

 

 

2. O segundo problema, é que eu gostaria que as janelas mudassem de tamanho de acordo com a imagem aberta naquele botão.

O único resize que eu consegui fazer, acabou espremendo o MC e ficando uma bosta. Então eu tentei simplesmente dizer que a largura e altura da janela eram iguais aos da imagem importada.

 

Eu tentei adicionar esse código dentro da função carrega(), mas não deu em nada.

_root.center.center_menu._width = largura;
_root.center.center_menu._height = altura;

Mas existe um outro problema. Como eu tenho uma imagem e uma descrição, eu teria que considerar o tamanho total dos dois. No final acho que é mais prático eu salvar a descrição como uma parte da imagem, ao invés de duas coisas separadas.

 

No caso, é possível fazer esse resize fluido? Fluido seria você ver o resize acontecendo, como se fosse uma animação (com a tabela crescendo e dominuindo) ao invés de mudar do nada.

 

Bom, essas são as minhas dúvidas, alguém sabe como posso resolver isso??

 

Obrigado ae por quem puder dar essa luz :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveitando, eu notei que ao clicar no botão 'fechar' da janela, o movie só fica invisível, mas continua podendo ser selecionado. Resolvi isso colocando o 'center._visible=0;' no final da animação da janela.

 

Mas acho q para eu usar o duplicateMovieClip eu vou ter q dar um unloadMovie tbm, pq se naum ao fechar a janela, quando eu abrir uma nova ela vai estar na mesma posição da que foi fechada, ao invés de abrir no meio novamente.

 

Dar o unload é fácil, é só eu colocar 'center.unloadMovie();', mas e como eu faço para dar o reload na janela? Infelizmente não é simplesmente colocar 'center.loadMovie();' =P

 

 

Bom, mlz colocar outro post, mas é que era uma outra dúvida e tbm ficaria um post gigante e extremamente chato de ler. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom já falei varias vezes como se faz um duplicate movie =/

 

é assim:

var duplicar:MovieClip = container.duplicateMovie("duplicar", 10);

E ai você carrega a proxima coisa no duplicar não no container ;)

 

E o width e o heigth de qualquer movieclip só é passivel de se pegar com a classe MovieClipLoader ;)

No evento onLoadInit ou Complete

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vlw pela ajuda Bersek, mas no final eu não me entendi muito bem com essa função que você colocou, mas eu usei a seguinte:

 

on (release) {
	this.createEmptyMovieClip("img_mc",this.getNextHighestDepth());
	duplicateMovieClip(img_mc, "newImg_mc", this.getNextHighestDepth());
	newImg_mc.loadMovie("exemplo.swf");
}

Mlz ae por perturbar e vlw a atençã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.