ricardo_mc 19 Denunciar post Postado Setembro 25, 2009 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
ricardo_mc 19 Denunciar post Postado Setembro 25, 2009 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
Thiago de Oliveira Cruz 21 Denunciar post Postado Setembro 26, 2009 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
ricardo_mc 19 Denunciar post Postado Setembro 28, 2009 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
Thiago de Oliveira Cruz 21 Denunciar post Postado Setembro 28, 2009 Leia como se usa o MovieClipLoader ;) é uma classe vários helps na internet ensinam como fazer Dica: http://berseck.wordpress.com/?s=MovieClipLoader Tem varios exemplos Abraços Compartilhar este post Link para o post Compartilhar em outros sites