CuecaX 0 Denunciar post Postado Abril 3, 2007 oi gente, eh o seguinte: eu to fazendo uma galeria de fotos (ta incompleto), mas to tendo uns probleminhas... as fotos carregam em sequencia e tal... direitinho... mas eu noa consigo pegar o tamanho (width e height) das imagens carregadas ... preciso disso pra poder redimensiona-las... ja tentei redimensionar sem checar, mas as imagens somem :( tb ja tentei pegar valor com o getBounds(), mas da um numero absurdo (6089349837 bla bla bla) http://forum.imasters.com.br/public/style_emoticons/default/upset.gif ja noa sei o q faço alguem me ajuda? :unsure: ------------ segue o codigo ActionScript (é so colar, ele cria os mcs sozinho) e o XML com as imagens: ActionScript var _lista:Array;var _imagem:Array;xml = new XML();xml.ignoreWhite = true;xml.load("main.xml");xml.onLoad = function(ok) { if(ok) { trace("ok"); writeXML(this); play(); } else { xml = "<b>Erro ao carregar a pagina</b>\"; } //trace(this);}function writeXML(xml:XML){ max = xml.childNodes[0].childNodes[1].childNodes.length; trace("max = " + max); _lista = new Array(max); _imagem = new Array(max); for (i=0; i<max; i++) { node = xml.childNodes[0].childNodes[1].childNodes[i]; //trace("nó = " + node); switch (node.nodeName) { case "imagem": _lista[i] = new String(node.childNodes.toString()); _imagem[i] = new MovieClip(); _imagem[i] = this.createEmptyMovieClip("imagem" + i, this.getNextHighestDepth()); _imagem[i].loadMovie(_lista[i]); _imagem[i]._x = i*100; _imagem[i]._y = 200; if (_imagem[i]._width > 100) _imagem[i]._width = 100; if (_imagem[i]._height > 67) _imagem[i]._height = 67; break; //case "teste": default: trace("sem imagem"); } }} XML (esse codigo so usa o <galeria> mas eu deixei o resto pq o codigo pega na ordem) <?xml version="1.0" encoding="ISO-8859-1" ?> <content> <noticias> <noticia>bla bla bla noticia 1</noticia> <noticia>bla bla bla noticia 2</noticia> </noticias> <galeria a="_galeria.swf"> <imagem>teste1.jpg</imagem> <imagem>teste2.jpg</imagem> <imagem>teste3.jpg</imagem> <imagem>teste4.jpg</imagem> <imagem>teste5.jpg</imagem> </galeria> <contato a="_contato.swf"> </contato></content> Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Abril 3, 2007 Você está pegando as propriedades (_width, etc) antes de verificar se a imagem já foi carregada. Não importa que a linha de AS que pega o _width esteja depois da linha do loadMovie(). Tem que fazer um "preloader".Uma boa dica é usar o MovieClipLoader. Procure no help do flash por ele e vá no evento onLoadInit. O segundo exemplo é bem compacto, siga por aí.Se tiver dúvidas, pode postar!Flw Compartilhar este post Link para o post Compartilhar em outros sites
CuecaX 0 Denunciar post Postado Abril 4, 2007 vou tentar isso ae...eu tentei usar um onload, mas nao deu certo...ae testando eu usei o onenterframe e descobri q so funciona 1 vez e pára!aparentemente o clip perde a referencia qdo sai da função writeXML :( Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Abril 4, 2007 Qual é a versão do seu flash? Se for 7, ou maior, dá pra usar o MovieClipLoader. Aí nem esquenta com onEnterFrame... Segue o exemplo que te falei do flash com alguns comentários: //Criando o listener para detectar quando o carregamento da imagem terminavar mclListener:Object = new Object();//Capturando o fim do carregamentomclListener.onLoadInit = function(target_mc:MovieClip) { //Aqui você põe aquelas 4 linhas de alinhamento das imagens trace("movie loaded");}//Adicionando o listener a um MovieClipLoadervar image_mcl:MovieClipLoader = new MovieClipLoader();image_mcl.addListener(mclListener);//Essa linha é a que você vai trocar pelo seu loadMovie (sendo o tester_mc o mc que vai carregar a foto).image_mcl.loadClip("http://www.yourserver.com/your_movie.swf", tester_mc); Flw Compartilhar este post Link para o post Compartilhar em outros sites
CuecaX 0 Denunciar post Postado Abril 5, 2007 po, valeu cara ^^ por acaso, A versao do flash q eu eu é o 8 :) entao sem problemas! mas so pra constar, das quatro linhas de alinhamento, essas duas funcionam normalmente do jeito q eu fiz: _imagem._x = i*100; _imagem._y = 200; acredito q seja pq a posição independe do tamanho da imagem :) de novo, valeu mesmo cara! :) Compartilhar este post Link para o post Compartilhar em outros sites
meiosegundo 0 Denunciar post Postado Abril 18, 2007 Olá CuecaX e AntonioSP, Permitam-me participar desse tópico, pois estou com o mesmo problema e mesmo acompanhando os post de vcs não consegui resolver. Depois de tentar inumeras vezes com o meu código sem sucesso, resolvi testar com o código de vcs, mas inda não rolou. Agradeço se puderem colaborar dando dicas em cima do código abaixo. As imagens estão sendo mostradas corretas, mas não estão sendo posicionadas corretamente. var _lista:Array; var _imagem:Array; xml = new XML(); xml.ignoreWhite = true; xml.load("assoc2.php"); xml.onLoad = function(ok) { if(ok) { trace("ok"); writeXML(this); play(); } else { xml = "<b>Erro ao carregar a pagina</b>"; } //trace(this); } function writeXML(xml:XML) { max = xml.childNodes[0].childNodes[1].childNodes.length; trace("max = " + max); _lista = new Array(max); _imagem = new Array(max); for (i=0; i<max; i++) { node = xml.childNodes[0].childNodes[1].childNodes; //trace("nó = " + node); switch (node.nodeName) { case "imagem": _lista = new String(node.childNodes.toString()); _imagem = new MovieClip(); _imagem = this.createEmptyMovieClip("imagem" + i, this.getNextHighestDepth()); _imagem.loadMovie(_lista); //Criando o listener para detectar quando o carregamento da imagem termina var mclListener:Object = new Object(); //Capturando o fim do carregamento mclListener.onLoadInit = function(imagem:MovieClip) { _imagem._x = 10; _imagem._y = 10; } //Adicionando o listener a um MovieClipLoader var _imagem:MovieClipLoader = new MovieClipLoader(); _imagem.addListener(mclListener); //Essa linha é a que você vai trocar pelo seu loadMovie (sendo o tester_mc o mc que vai carregar a foto). _imagem.loadClip(imagem, _lista); break; //case "teste": default: trace("sem imagem"); } } } Obrigado e abraços a todos. Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Abril 18, 2007 Opa, houveram algumas confusões aí. Seguem os comentários: var _lista:Array;var _imagem:Array;xml = new XML();xml.ignoreWhite = true;xml.load("assoc2.php");xml.onLoad = function(ok) { if (ok) { trace("ok"); writeXML(this); play(); } else { xml = "<b>Erro ao carregar a pagina</b>"; } //trace(this);};function writeXML(xml:XML) { max = xml.childNodes[0].childNodes[1].childNodes.length; trace("max = " + max); _lista = new Array(max); _imagem = new Array(max); for (i = 0; i < max; i++) { node = xml.childNodes[0].childNodes[1].childNodes[i]; //trace("nó = " + node); switch (node.nodeName) { case "imagem" : _lista[i] = new String(node.childNodes.toString()); _imagem[i] = new MovieClip(); _imagem[i] = this.createEmptyMovieClip("imagem" + i, this.getNextHighestDepth()); //A linha do loadMovie você tira, é pra substituir pelo loadClip var mclListener:Object = new Object(); mclListener.onLoadInit = function(imagem:MovieClip) { _imagem[i]._x = 10; _imagem[i]._y = 10; }; //O MovieClipLoader tem que ser com um nome diferente dos que você já usou var seu_Mcl:MovieClipLoader = new MovieClipLoader(); seu_Mcl.addListener(mclListener); seu_Mcl.loadClip(_lista[i], _imagem[i]); break; //case "teste": default : trace("sem imagem"); } }} Flw Compartilhar este post Link para o post Compartilhar em outros sites
meiosegundo 0 Denunciar post Postado Abril 18, 2007 Valeu pela atenção ... Mas agora não está carregando as imagens ... alterei a linha ... seu_Mcl.loadClip(_lista, _imagem); ... para ... seu_Mcl.loadClip(_imagem, "imagem"); mesmo assim não funcionou. Preciso fazer alguma outra alteração ? vlw Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Abril 18, 2007 Na verdade não precisava fazer alteração nenhuma... :) Compartilhar este post Link para o post Compartilhar em outros sites