mexicanox 7 Denunciar post Postado Setembro 3, 2009 opa !!!!!!!!!! Seguinte pessoal, eu to precisando fazer uma galeria de fotos, ai o que eu queria fazer é criar todos os movie clips (que no caso serao os thumbails) direto pelo Action Script 2, eu tentei fazer com um for mas is nao deu certo. e se possivel eu tambem preciso que os movie clips fossem criados um ao lado do outro. foi mais ou menos assim que eu tentei fazer for(i=0;i<10;i++){ _root.createEmptyMovieClip("thumb" +i,1); loadMovie("imagemAqui"); } flws !!!!!! Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Setembro 3, 2009 Utilize duplicateMovie() Tem alguns exemplos aqui no forum de como faz Inclusive um no tutorial Se quiser tbm tem nesse link Tutoriais Abraços Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Setembro 4, 2009 to tentando, mas ainda nao obtive sucesso, eu nao to conseguindo por pra funciona no caso ele so ta colocando a primeira foto. this.createEmptyMovieClip("base",this.getNextHighestDepth()); for(i=0;i<=5;i++){ var copia = base.duplicateMovieClip(base,"foto"+i,1); var espacoH = 80 * i; setProperty("copia",_x,espacoH); setProperty("copia",_y,5); setProperty("copia",_xscale,75);; setProperty("copia",_yscale,75); copia.loadMovie(images[i]); copia.onPress = onclick; } fwls Compartilhar este post Link para o post Compartilhar em outros sites
Eder Fortunato 15 Denunciar post Postado Setembro 4, 2009 você tem que definir um depth (level ou camada) para cada cópia, no seu codigo esta o numero 1 para todos então deixa assim: var maiorDepth = this.getNextHighestDepth(); var copia = base.duplicateMovieClip("foto"+i,maiorDepth ); Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Setembro 5, 2009 você tem que definir um depth (level ou camada) para cada cópia, no seu codigo esta o numero 1 para todos então deixa assim: var maiorDepth = this.getNextHighestDepth(); var copia = base.duplicateMovieClip("foto"+i,maiorDepth ); eu ja tentei fazer desse jeito mas tambem nao funcionou Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Setembro 5, 2009 SALVE !!!!!!!!!!!!!!!!!!!!!!! consegui finalmente pelo que eu entendi o que eu estava fazendo era criar o moviclip no lugar errado(pelo menos eu acho). na linha que eu crio o movi clip foi so adicionar o _root, ai ficou assim: var copia = _root.base.duplicateMovieClip("foto"+i,maiorDepth); agora funcionou que é uma beleza POREM .... sem querer abusar da boa vontade de voces eu queria que qunado fosse passado o mouse sobre a foto fosse chamada uma função. A função esta pronta e funciona mas eu nao sei como fazer o movieclip criado chamar a função quando ocorrer o evento. eu to tentando adicionar um listener mas nao ta dando muito certo. flws Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Setembro 10, 2009 Coloque um botão chamando o image.onRollOver = sua função Abraços Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Setembro 11, 2009 desculpe a falta de conhecimento em flash mas eu nao entendi muito bem como fazer. eu ja tentei de varios jeitos diferentes esse aqui eu adicionei no for que cria os cria os thumbs var nomeFoto = "foto" +i; caminhoMc.nomeFoto.onRollOver = function(){ animaThumb("thumb"+i,nomeFoto,0); } ja tentei colocar fora do for caminhoMc.foto1.onRollOver = function(){ animaThumb("thumb1",foto1,0); } tambem nao funcionou flws Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Setembro 16, 2009 Bom para fazer rollOver em MC criados dinamicamente 1 a 1... Você tem que fazer isso na função onloadInit do clip e usar a classe MovieClipLoader(). Tem alguns exemplos pelo forum... fora na parte de tutoriais E floodar respostas suas é contra as regras do forum Leia as regras Abraços Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Setembro 19, 2009 agora falta pouco. eu consegui adicionar os eventos(RollOver,RollOut,Release), o problema é que os eventos so funcionam na ultima imagem, segue o codigo. import mx.transitions.Tween; import mx.transitions.easing.*; function animaThumb(instancia,obj,flag){ var altura = 0; var largura = 0; if(flag == 0){ altura = 110; largura = 110; }else{ altura = 75; largura = 75; } var instancia:Tween = new Tween(obj,"_width",Elastic.easeOut,obj._width,largura,1,true); var instancia:Tween = new Tween(obj,"_height",Elastic.easeOut,obj._height,altura,1,true); } //caminho para o MC var caminhoMc = _root.flashmo_contents.produtos; //caminho onde estao as imagems var caminho = "Original/"; //array com o nome das imagens var images = new Array("aguaSanitaria.jpg","aguaSanitaria.jpg","aguaSanitaria.jpg","aguaSanitaria.jpg","aguaSanitaria.jpg","aguaSanitaria.jpg"); //cria um movie cllip vazio que serve como base para ser duplicado caminhoMc.createEmptyMovieClip("base",caminhoMc.getNextHighestDepth()); //for que cria os thumbs for(i=0;i<=5;i++){ //cria uma instancia da classe MOVIE CLIP LOADER var mcl = new MovieClipLoader(); //da o maior depth para o MC var maiorDepth = caminhoMc.getNextHighestDepth() //a variavel COPIA recebe o MC duplicado var copia = caminhoMc.base.duplicateMovieClip("foto"+i,maiorDepth); mcl.loadClip(caminho+images[i],copia); //da um espaço entre cada MC var espacoH = 85 * i; //define as propriedades do MC copiado copia._x = espacoH; copia._y = 5; copia._xscale = 75; copia._yscale = 75; mcl.onLoadInit = function(mcl):Void{ copia.onRollOver = function(){ animaThumb("thumb"+i,copia,0); } copia.onRollOut = function(){ animaThumb("thumb"+i,copia,1); } copia.onRelease = function(){ trace("Clicado"); } } } o que eu acho que esta acontecendo é que em cada iteraçao do for eu estou reescrevendo a classe ai a unica que funciona é a ultima, porem eu nao sei como consertar isso. so mais uma coisinha, quando eu seto o tamanho do mc (copia._xscale = 75) ; ) o mc fica muito maior do que 75, se alguem souber o que é ejuda bastante. flws Compartilhar este post Link para o post Compartilhar em outros sites
Public2004 79 Denunciar post Postado Setembro 19, 2009 1 - É isso mesmo, do jeito que está vai guardar sempre a última variável do laço de repetição... Você deve setar um novo caminho para a variável e nas ações chame por este novo caminho ao invés da variável "i". 2 - Lembre-se que o "_xscale" e "_yscale" trabalham com valores em percentuais e não em pixels... Abs. Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Setembro 21, 2009 eu ate entendi o raciocicio mas nao consegu arrumar um jeito de fazer, como é que eu vou setar um outro camimho para cada mc criado?? flws Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Setembro 28, 2009 bem eu sei que vai contra as regras mas o topico fico meio "perdido no limbo", ai eu teria que abrir outro topico com a mesma duvida e começar tudo de novo, me perdoem. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Setembro 28, 2009 A pergunta agora é diferente da primeira... Você quer saber como setar um nome diferente E isso é simples var duplicate:MovieClip = container.duplicateMovie('valor'+i, i); Onde i é um contador e o container é o movieclip a ser duplicado Abraços Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Setembro 29, 2009 eu fiz exatamente e isso mesmo var copia = caminhoMc.base.duplicateMovieClip("foto"+i,maiorDepth); So que as açoes(onrollover, onrollout, onclick) para os botoes, funciona somente na ultima imagem, ai o Public2004 disse. 1 - É isso mesmo, do jeito que está vai guardar sempre a última variável do laço de repetição... Você deve setar um novo caminho para a variável e nas ações chame por este novo caminho ao invés da variável "i". ai eu nao entedi como eu vou fazer essa parte. na hora de chamar os botoes esta assim mcl.onloadInit = function(mcl):Void{ copia.onRollOver = function(){ animaThumb("thumb"+i,copia,0); } copia.onRollOut = function(){ animaThumb("thumb"+i,copia,1); } copia.onRelease = function(){ trace("Clicado"); } } flws Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Setembro 29, 2009 No caso ai você ta pondo a ação no COPIA Você tem que por ação no que é o equivalente... Para funcionar melhor faça assim: var copia:Array = new Array(); copia[i] = caminhoMc.base.duplicateMovieClip("foto"+i,maiorDepth); Ai nos seus botões em vez de usar cópia você usa copia Lembre-se de declarrar essa array ai láaaaaaaaaaaaaaaaaa no começo do seu arquivo flash... fora de funções fora de tudo de preferencia uma das primeiras linhas do seu script. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Public2004 79 Denunciar post Postado Setembro 30, 2009 Depois de tantas sugestões, acho que confundiu um pouco, então se me permitem, segue o código com algumas correções (baseado no seu exemplo). Compare com o seu código e entenda as alterações. Testa ae! import mx.transitions.Tween; import mx.transitions.easing.*; function animaThumb(instancia, obj, flag) { var altura = 0; var largura = 0; if (flag == 0) { altura = 110; largura = 110; } else { altura = 75; largura = 75; } var instancia:Tween = new Tween(obj, "_width", Elastic.easeOut, obj._width, largura, 1, true); var instancia:Tween = new Tween(obj, "_height", Elastic.easeOut, obj._height, altura, 1, true); } //caminho para o MC var caminhoMc = _root.flashmo_contents.produtos; //caminho onde estao as imagems var caminho = "Original/"; //array com o nome das imagens var images = new Array("aguaSanitaria.jpg","aguaSanitaria.jpg","aguaSanitaria.jpg","aguaSanitaria.jpg","aguaSanitaria.jpg","aguaSanitaria.jpg"); //cria um movie cllip vazio que serve como base para ser duplicado caminhoMc.createEmptyMovieClip("base", caminhoMc.getNextHighestDepth()); //for que cria os thumbs for (i=0; i<=images.length; i++) { //a variavel COPIA recebe o MC duplicado var copia = caminhoMc.base.createEmptyMovieClip("foto"+i, i); //da um espaço entre cada MC var espacoH = 85*i; //define as propriedades do MC copiado copia._x = espacoH; copia._y = 5; copia._xscale = 75; copia._yscale = 75; //cria uma instancia da classe MOVIE CLIP LOADER var mcListener:Object = new Object(); var mcLoader:MovieClipLoader = new MovieClipLoader(); mcListener.onLoadInit = function(copia):Void { copia.onRollOver = function() { animaThumb("thumb", this, 0); }; copia.onRollOut = function() { animaThumb("thumb", this, 1); }; copia.onRelease = function() { trace("Clicado"); }; }; mcLoader.addListener(mcListener); mcLoader.loadClip(caminho+images[i], copia); } Abs e bom estudo. Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Outubro 3, 2009 Abs e bom estudo. Realmente eu preciso mesmo http://forum.imasters.com.br/public/style_emoticons/default/graduated.gif , porem agora eu vo ver se cnsigo passar direto pro AS3. deu certo eu consegui fazer o que precisava, muuuutissimo obrigado pela ajuda dos dois, voces nao sabem como eu to faliz de ter terminado isso. valeu de verdade. flws, ate o proximo topico :D :D :D Compartilhar este post Link para o post Compartilhar em outros sites