fernando1 0 Denunciar post Postado Abril 7, 2009 Boa Tarde Pessoal! A coisa ta feia aqui, hahaa.., quebrei muito a cuca e to precisando de um help!!! ;) Seguinte estou desenvolve um site aqui com Flash + PHP + Mysql, ate ai tudo bem! Esta saindo e funfando as coisas :D O problema é o seguinte: Pego algumas imagens do banco de dados , e preciso colocar elas em movieclips um do lado do outro em um SWF... Para ficar simples, pensemos em 3 imagens. Ate puxar do banco de dados e trazer, etc.. tranquilo.. Preciso saber uma forma de criar mais de um movieclip vazio por action script. Tudo bem existe a função : var movieclip = _root.createEmptyMovieClip('alvo'+i,_root.getNextHighestDepth()); // onde alvo seria o nome e poderia colocar isso dentro de um for , com a variável i incrementando Depois dou um loadMovie(); so que cada movieclip eu preciso posiconar suas coordenadas(x e y) com valores diferentes , para ficar um do lado do outro! movieclip._x = x_inicial; // Posição X do movieclip movieclip._y = y_inicial; // Posição Y do movieclip abaixo faço: x_inicial = espaco_x * i // lembra a variavel "i" de incremento.... x_inicial = espaco_x * i // lembra a variavel "i" de incremento.... O que esta acontecendo é que, um movieclipe sobrepoem o outro, ou seja o flash não esta entendendo que cada um é separado e esta usando o mesmo movieclip para incluir e poscionar o outro. Fico no Aguardo, ja estou enrrolado com isso a dias... ;) Obrigado pela ajuda http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Public2004 79 Denunciar post Postado Abril 7, 2009 fenando1, Seja bem vindo ao fórum. Entendi o que quer, mas me perdi nos seus exemplos, então resumidamente crie as variáveis como número inicial de linha e coluna, também uma com a quantidade de colunas desejadas e uma com o total de objetos que serão carregados; Depois no laço for e dentro de uma condição, verifique se o valor atribuido a variavel da coluna é menor ou igual o valor da quantidade de colunas, caso ok, você cria o mc para carregar os objetos e vai verificando em cada laço se atingiu o número de colunas (sempre incrementando mais um na variável inicial da coluna), quando atingir, vai para uma segunda condição onde retorna o valor inicial para a variável da coluna e acrescenta mais um agora na variável da linha. Quanto ao espaçamento dos mc's, crie variáveis com estes valores e a cada laço altere as posições, pois quando você cria o mc vazio ele é 0 por 0. Abs. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Abril 7, 2009 1 jeito é esse aqui: var alvo:MovieClip = fotos+i; alvo = createEmptyMovieClip("alvo"+i, _root.getNextHighestDepth()); Assim você vai criar nomes diferentes para a mesma variavel... isso ai tem que ser colocado dentro de um laço for Abraços Compartilhar este post Link para o post Compartilhar em outros sites
fernando1 0 Denunciar post Postado Abril 8, 2009 Obrigado a todo por tentar ajudar Berseck, tentei fazer o que você postou mais infelizmente não resolveu.. Bom acho que não explessei direito o que esta acontecendo... Vou detalhar melhor e por o codigo abaixo explicando como fiz, talvés assim fique melhor para compreender.. ;) Bom resumindo, tenho um SWF, e dentro dele precis carregar por exemplo 3 movieclips vazios, onde em cada um vou colocar um outro arquivo SWF, por exemplo. PROBLEMA: O que ocorre é que so está carregando a primeira imagem nos 3 movieclips vazio. No banco de dados esta certo, incluisve testei o codigo, o php retorna certinho todas as imagens e devolve para o flash. Segue o código abaixo detalhado, ele esta marcado por linhas, abaixo explico o conteúdo de cada linha: 1) var id_tipo_projeto = 1; 2) // Definindo Variáveis inicial do movieclip 3) _global.x_inicial = 13; // posição x inicial do primeiro movieclip 4) _global.y_inicial = 63; // posição y inicial do primeiro movieclip 5) _global.espaco_x = 124; // espaço horizontal entre movieclips 6) _global.espaco_y = 84; // espaço vertical entre movieclips 7) // Objeto LoadVars. 8) var retorno:LoadVars = new LoadVars(); 9) // Carrega o arquivo PHP 'lista_portfolio.php'. 10) retorno.load('lib/flash_php/lista_portfolio.php?id_tipo_projeto='+id_tipo_projeto); 11) // Ao arquivo ser carregado, a função 'carregarDados' é chamada. 12) retorno.onLoad = carregarDados; 14) function carregarDados() { 15) // se a quantidade de linhas for maior que 0, exibe os portfolios encontrados 16) if (this.nlinhas > 0) { 17) for (i=1; i <= this.nlinhas; i++) { 18) //cria um movie clip vazio é atraves desse movieclip, que vamos posicionar os portfolios 19) var target_mc = _root.createEmptyMovieClip('alvo'+i, i); 20) with(target_mc) { 21) loadMovie("box_portfolio.swf?id_tipo_projeto="+id_tipo_projeto+"&id_projeto="+this["id_projeto"+i]); 22) _x = x_inicial; 23) _y = y_inicial; 24) } 25) x_inicial = espaco_x * this.nlinhas; 26) if ((this.nlinhas % 3) == 0){ y_inicial = espaco_y * this.nlinhas; } 27) } // end for 28) } 29) } // End Function EXPLICANDO AS LINHAS 1) id_tipo_projeto, é uma variável que esta no meu banco de dados, ela especifica qual projeto pode ser, 1- WEB, 2- E-mail Marketing, etc.. No caso destes moviesclip que vou carregar todos são do tipo 1. 3) Posição inicial X do primeiro movieclip 4) Posição inicial Y do primeiro movieclip 5) Espaço Horzontal entre movieclipes ( ou seja, o tamanho de um movieclip, mais o espaço entre eles) 6) Espaço Vertical entre movieclipes ( ou seja, o tamanho de um movieclip, mais o espaço entre eles) Obs: as linhas 5 e 6 são exatamente onde iram começar o próximo movieclip 8) Declaro uma variável retorno do tipo LoadVars(); 10) Pego a propriedade load da variável retorno, onde chamo meu arquivo PHP, passando por parametro a variável id_tipo_projeto, sendo igual 1 12) Chamo uma função onde meu arquivo PHP vai devolver o resutado esperado , no caso as imagens do banco 14) A função de resposta do arquivo PHP 16) A variável " this.nlinhas " ,traz a quantidade de linhas encontrada no banco. 17) Um for para passar em cada linha encontrada , usando a "variável i" como incremento 19) Criei um movieclip com o nome alvo + a variavel de incremento i e atribui a variável target_mc 21) À esta variável, carrego o arquivo box_portfolio.swf sendo que para dentro deste arquivo passo a variável "id_tipo_projeto" que é 1 (padrão, todos vão ser iguais) e a variável id_projeto ( onde cada vez que passo no for chamo como id_projeto+i, pq quando veio do banco ela veio como projeto1=id&projeto2=id, ou seja cada linha do banco em uma variável distinta) , assim obtenho cada imagem do banco de dados onde aplico uns efeitos neste movie, e carrego ele. 22) Posição horizontal deste movie box_portfolio.swf, dentro do meu swf 23) Posição vertical deste movie box_portfolio.swf, dentro do meu swf 25) Incremento a posição horizontal do moviclip, para que o próximo não saia sobre a posição do anterior 26) Como tem que ter 3 movieclips por linha, a cada 3 eu incremento a posição vertical do moviclip, para que eles desce na linha de baixo. Bom espero que isso ajude. Fico no aguardo ;) Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Abril 8, 2009 Bom para você ver o que você está fazendo corretamente Utilize o setInterval em vez de for... assim ele vai fazer a mesma função só que vocÊ vai ter de trabalhar com if e else para setar o I Podendo assim vocÊ ver com um intervalo de tempo o que ta ocorrendo com o seu código. Vou dizer adiantado que o que você ta fazendo é re-criando o mesmo carregador varias vezes... e como ele já ta na tela... ele só vai pegar novamente esse carregador e colocar o novo elemento dentro dele com o loadMovie. O que você deve usar é o duplicateMovie(); Que assim ele vai criar vários MovieClips de acordo com a sua necessidade e não vai ficar sobrescrevendo o mesmo. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
fernando1 0 Denunciar post Postado Abril 8, 2009 Valeu Berseck! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Entendi o que esta acontecendo.. Tem que usar o duplicateMovieClip(); Até sua estrutura tudo bem, poderia ser algo do tipo: duplicateMovieClip('mc_atual','mc_novo'+i, _root.getNextHighestDepth()); sendo " i " a variável de incremento, colocando este comando dentro do for, para cada vez que ele passar no laço, criar um novo movieclip! A dúvida é o seguinte: Tipo como chamo as propriedades do novo movieclip. Por exemplo: Para alterar a posição X do mc_atual fica : mc_atual._x = 50; No caso do 'mc_novo'+i como faço? :huh: Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Abril 8, 2009 Ficaria +/- assim: var foto:MovieClip = duplicar(); function inicia(){ for(var i=0;i<10;i++){ newX = i * (50); duplicate = foto.duplicateMovieClip("foto-"+i, i, {_x:newX}); duplicate.loadMovie(imagens[i]); }; //Função responsavel pelo clip duplicado function duplicar():MovieClip { var mc:MovieClip = _root.createEmptyMovieClip("foto", this.getNextHighestDepth()); mc._x = 0; //posição inicial do clip x mc._y = 0; //posição inicial do clip y return mc; }; Da uma lida no help do Flash que ele ensina direitinho basta copy paste :P Abraços Compartilhar este post Link para o post Compartilhar em outros sites
fernando1 0 Denunciar post Postado Abril 8, 2009 Ok , Valeu! Vou dar uma olhada http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
fernando1 0 Denunciar post Postado Abril 14, 2009 Rapaiz, o negôcio aqui ta estranho :unsure: Fiz extamente como você falou, usando "duplicateMovieClip" No meu exemplo to usando: var mc_alvo:MovieClip = mc_inicial.duplicateMovieClip("alvo"+i,i); isso dentro do for para duplicar o movieclip chamado "mc_inicial" Até funciona perfeitamente, quantos eu necessitar ele cria, porém, quando é criado, altera o conteúdo dos outros também. Vou dar um exemplo: Suponha que necessite inserir dois arquivos SWF de fora no meu SWF. Quando inseri o primeiro, sai legalzinho, agora quando vai inserir o segundo, ele ate posiciona em uma outro lugar que mandei ( ou seja não sobrepõem o anterior), más é alterado o conteudo do segundo e do primeiro, sendo que era para alterar somente do segundo. Coisa de doido :blink: O que será que estou fazendo errado? Eu acho que esta var que crio chamada "mc_alvo", teria que ser criada dinâmicamente, sei la, juntando com a varíavel "i" de incremento do for, por exemplo. No entanto não sei como fazer isso no flash, ai esta meu problema :( Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Abril 15, 2009 Bom amigo vamos lá :P Vou dar 2 links do meu blog onde explica como usar o DuplicateMovieClip() E um com uma galeria que usa o DuplicateMovieClip() como exemplo... Ai tu vai ter +/- uma ideia de como funciona acredito eu. Pelo menos acho que ta bem explicadinho :P Qualquer duvida comenta lá ou pergunta aqui que respondo. Explicação Exemplo Abraços Compartilhar este post Link para o post Compartilhar em outros sites
fernando1 0 Denunciar post Postado Abril 20, 2009 Fala Berseck.., beleza? Então veio, baixei o exemplo e verifiquei todo o código la.. Implementei de acordo com o padrão que seguia la.., Até como funciona a duplicação eu entendi e sei fazer, entretanto, esta acontecendo uma coisa de louco aqui.... :blink: Tipo, o código esta parecido, tudo bunitinho, más o filho da mãe insiste em duplicar a mesma imagem no primeiro e no segundo ( ele varia, as vezes pega a primeira imagem e duplica nos dois, ou as vezes pega a segunda e duplica nos dois) O que será que tem de errado nessa geringoça... :P , Meu já to ficando maluco com isso :unsure: Segue o código abaixo: Este é o SWF principal, que vai carregar as imagens : // Definindo Variáveis inicial do movieclip _global.id_tipo_projeto = 1; // Projetos WEB _global.espaco_x = 124; // espaço horizontal entre movieclips _global.espaco_y = 84; // espaço vertical entre movieclips // Definindo Variáveis padrão do movieclip var foto:MovieClip = duplicar(); var duplicate:MovieClip = new MovieClip(); var mcl:MovieClipLoader = new MovieClipLoader(); //Função responsavel pelo clip duplicado function duplicar():MovieClip { var mc:MovieClip = _root.createEmptyMovieClip("foto", this.getNextHighestDepth()); mc._x = 13; //posição inicial do clip x mc._y = 63; //posição inicial do clip y return mc; } // End Function // Objeto LoadVars. var retorno:LoadVars = new LoadVars(); // Carrega o arquivo PHP 'lista_portfolio.php'. retorno.load('http://servidor/officinadigital/site2009/lib/flash_php/lista_portfolio.php?id_tipo_projeto='+id_tipo_projeto); // Ao arquivo ser carregado, a função 'carregarDados' é chamada. retorno.onLoad = carregarDados; function carregarDados() { var x_inicial:Number = 13; var y_inicial:Number = 63; // se a quantidade de linhas for maior que 0, exibe os portfolios encontrados if (this.nlinhas > 0) { for (var i:Number = 1; i <= this.nlinhas; i++) { duplicate = foto.duplicateMovieClip("foto"+i,i,{_x:x_inicial,_y:y_inicial}); mcl.loadClip("http://servidor/officinadigital/site2009/box_portfolio.swf?id_projeto="+this["id_projeto"+i], duplicate); x_inicial = espaco_x * this.nlinhas; if ((this.nlinhas % 3) == 0){ y_inicial = espaco_y * this.nlinhas; } } // End for } // End If //adiciono o listener mcl.addListener(this); } // End Function Bom o php deste código vai me retornar a seguinte linha: id_projeto1=1&id_projeto2=2&nlinhas=2 Se você perceber na linha: mcl.loadClip("http://servidor/officinadigital/site2009/box_portfolio.swf?id_projeto="+this["id_projeto"+i], duplicate); estou chamando um movieclip externo, onde dentro ele, recebe a variável do id_projeto Bom segue agora o código desse movieclip interno: // Objeto LoadVars. var retorno:LoadVars = new LoadVars(); // Carrega o arquivo PHP 'portfolio.php'. /* === id_tipo_projeto == 1 - Sites, 2 - E-mail Marketing, 3 - Banner, 4 - Logotipo, 5 - Impresso */ /* === id_projeto === Identifica o projeto que vai ser carregado */ //var id_tipo_projeto = 1; //var id_projeto = 1; retorno.load("http://servidor/officinadigital/site2009/lib/flash_php/portfolio.php?id_tipo_projeto="+id_tipo_projeto+"&id_projeto="+_root.id_projeto); // Ao arquivo ser carregado, a função 'carregarDados' é chamada. retorno.onLoad = carregarDadosPortfolio; function carregarDadosPortfolio() { // Carrega a imagem do banco vindo do arquivo portfolio.php para variáveis _root.img_box_port = this.img_box; _root.id_projeto = this.id_projeto; } // End Function Dai dentro desse swf, depois desse action, tenho um movclip, que executo umas animações. Dai depois dessas animações eu faço o seguinte loadMovie(_root.img_box_port,img_box_portfolio); Ou seja carrega a imagem, para dentro do "movieclip img_box_portfolio" OBS: se eu testar o swf interno, separadamente, passando parametros na URL, funciona perfeitamente ;) Desculpe incomodar assim, más os neurônios, ja estão fervendo aqui :P Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Abril 21, 2009 Bom... o problema de duplicar a imagem eu não entendi não O.o... Pois o código acima não permite a duplicata da imagem... ele vai criar um novo clip a cada rodada... acredito eu... Poderia disponibilizar o fla para se ver realmente o que ta acontecendo??? abraços Compartilhar este post Link para o post Compartilhar em outros sites
fernando1 0 Denunciar post Postado Abril 22, 2009 Faka Berseck! Então veio, zipei aqui os arquivos que você pediu. Estão no link abaixo para baixar: http://dev.officinadigital.com.br/officina...e(Fernando).zip OBS: O arquivo "portf_web1" é o primeiro a carregar, dai ele chama o outro... Qualquer dúvida, ou se precisar de algo avisa.... ;) Fico no Aguardo.. Obrigado ^_^ Compartilhar este post Link para o post Compartilhar em outros sites
fernando1 0 Denunciar post Postado Abril 23, 2009 [Resolvido] Fala Berseck! Rapaiz, consegui resolver essa geringonça aqui http://forum.imasters.com.br/public/style_emoticons/default/grin.gif Nem eu to acreditando.., vou abrir um champanhe :P Seguinte, o problema que estava ocorrendo, é que da forma feita, o sistema estava assumindo a mesma instance para todos os movieclips duplicados. Dai veio uma idéia loca na minha cabeça, olha o que mudei: Antigamente estava: duplicate = foto.duplicateMovieClip("foto"+i,i,{_x:x_inicial,_y:y_inicial}); mcl.loadClip("http://servidor/officinadigital/site2009/box_portfolio.swf?id_projeto="+this["id_projeto"+i], duplicate); Na verdade você não precisa disto, basta uma variável que crie o movieclip vazio, como a "foto" ta fazendo, entretanto ficaria assim : foto.duplicateMovieClip("foto"+i,i,{_x:x_inicial,_y:y_inicial}); loadMovie("http://servidor/officinadigital/site2009/box_portfolio.swf?id_projeto="+this["id_projeto"+i],_root["foto"+i]); ou seja cada vez que duplicar o nome da "estancia" vai assumir "foto"+i dai dentro do loadMovie basta mandar carregar em _root["foto"+i] Bom, quero agradeçer ao Public2004 e ao Berseck que tentaram me ajudar, muito obrigado... Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Abril 23, 2009 Parabens velhinho ;) http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites