Dynho 0 Denunciar post Postado Abril 18, 2008 Pessoal, tenho um script que via código cria vários movieclips vazios, adiciona fotos a eles, e os posiciona no palco com espaço de 20px entre eles. Outro código é encarregado de fazer esses mc's se moverem horizontalmente na tela. Acontece que esses clips tem que ter uma função para quando clicados abrir uma janela popup com a imagem correspondende. Essas imagens são chamadas via XML, e nesse arquivo XML que é gerado pelo PHP já tem a largura e a altura que a popup deve ter. Mas como os clips são gerados via código e não tem um "botão" dentro deles, não consigo fazer a função GetURL funcionar. Minha primeira dúvida é: Da mesma forma que criamos movieclips vazios, tem como criar também botões e adicionálos a esse movie clip vazio? Tudo dinamicamente? Outra dúvida: A função GetURL não está funcionando creio eu porque os mc's estão dentro de um onEnterFrame e isso creio eu gera um novo movie clip a cada evento. Como eu poderia resolver isso? Como disse acho que o ideal seria já embutir no movieclip vazio um botão mas não achei como fazer isso. Alguém pode me ajudar? Abaixo segue o código que estou tentando fazer funcionar: var Posicao:Number = 0; // Posição Inicial var TamanhoTotal:Number = 0; // Seto o tamanho total, inicialmente com zero objXML=new XML(); objXML.ignoreWhite=true; objXML.onLoad=processa; objXML.load("xml/galeria.xml"); function processa() { var rootNode:XMLNode = this.firstChild; var mcTotal:Number = rootNode.childNodes.length; for (i=1; i < mcTotal; i++){ // Com esse for eu coloco os clips no palco. Mas não consigo colocar um botão neles pra gerar o evento que chama a popup var nodeDados:XMLNode = rootNode.childNodes; _root.createEmptyMovieClip(_root["Produto" + i], i); loadMovie(nodeDados.childNodes[0].childNodes, _root["Produto" + i]); // Aqui crio o clip, e aqui que acho que deveria poder colocar um botão _root["Produto" + i]._x = Posicao; Posicao += 160; _root.mvLeft.swapDepths(_root["Produto" + i]); _root.mvRight.swapDepths(_root["Produto" + i]); } TamanhoTotal = Posicao - 160; moverEsquerda(mcTotal,TamanhoTotal,txtURLs); // Aqui eu chamo a função que vai começar o movimento pra esquerda } _global.direcao = ""; // Essa variável global armazenará a última chamada que foi feita, se para esquerda ou para direita function moverEsquerda(txtQuant,txtTamanhoTotal){ // Aqui começa a movimentação. Reparem que passei 2 parâmetros e que os tranformo em variáveis globais _global.Quant = txtQuant; _global.txtURLs = txtURLs; _global.TamanhoTotal = txtTamanhoTotal; _global.direcao = "esquerda"; delete _root.onEnterFrame; _root.onEnterFrame = function(){ for (i=Quant; i >= 1; i--){ if (_root["Produto" + i]._x < -280){ // Esse primeiro ifpega os clips menor que -280 para depois recolocálos na coordenada mais alta do lado direito x_recoloca = 0; w_recoloca = 0; for (j=Quant; j >= 1; j--){ // Esse for pega o clip com menor coordenada _x, recalcula e joga o clip em questão pra ultima posição à direita if (_root["Produto" + j]._x > 0){ x_atual = getProperty( _root["Produto" + j], _x ); if (x_atual > x_recoloca){ x_recoloca = x_atual; } } } _root["Produto" + i]._x = x_recoloca + 140 + 20; // Como cada clip tem 140px somo esse valor a 20px que é o espaço entre eles } _root["Produto" + i]._x -= 5; // Continua com o movimento } // Esse for é apenas para parar o clip quando o mouse passar por cima de algum deles. // Daí a importância da variável _global.direcao criada antes for (i=Quant; i >= 1; i--){ _root["Produto" + i].onRollOver = function() { delete _root.onEnterFrame; } _root["Produto" + i].onRollOut = function() { if (_global.direcao == "esquerda"){ _root.moverEsquerda(_global.Quant,_global.TamanhoTotal); }else{ _root.moverDireita(_global.Quant,_global.TamanhoTotal); } } } } } function moverDireita(txtQuant,txtTamanhoTotal){ // Praticamente a mesma coisa da outra função só que faz o inverso _global.Quant = txtQuant; _global.TamanhoTotal = txtTamanhoTotal; _global.direcao = "direita"; delete _root.onEnterFrame; _root.onEnterFrame = function(){ for (i=Quant; i >= 1; i--){ if (_root["Produto" + i]._x > TamanhoTotal){ x_recoloca = 0; w_recoloca = 0; for (j=Quant; j >= 1; j--){ if (_root["Produto" + j]._x < 0){ x_atual = getProperty( _root["Produto" + j], _x ); if (x_atual > x_recoloca){ x_recoloca = x_atual; } } } _root["Produto" + i]._x = x_recoloca - 140 - 20; } _root["Produto" + i]._x += 5; } for (i=Quant; i >= 1; i--){ _root["Produto" + i].onRollOver = function() { delete _root.onEnterFrame; } _root["Produto" + i].onRollOut = function() { if (_global.direcao == "esquerda"){ _root.moverEsquerda(_global.Quant,_global.TamanhoTotal); }else{ _root.moverDireita(_global.Quant,_global.TamanhoTotal); } } } } } Agora o código dos botões de direita e esquerda: Botão para Esquerda: on (press){ _root.moverEsquerda(_global.Quant,_global.TamanhoTotal); } Botão para Direita on (press){ _root.moverDireita(_global.Quant,_global.TamanhoTotal); } Estrutura do arquivo XML: <?xml version="1.0" encoding="utf-8"?> <galeria> <imagens> <thumbs>galerias/imgThumbs/miniFOTO14.jpg</thumbs> <imagem>galerias/imgGrande/FOTO14.jpg</imagem> <titulo>Tec Per 1</titulo> <descricao>Descrio 1</descricao> <largura>400</largura> <altura>350</altura> </imagens> <imagens> <thumbs>galerias/imgThumbs/miniFOTO15.jpg</thumbs> <imagem>galerias/imgGrande/FOTO15.jpg</imagem> <titulo>Tec Per 1</titulo> <descricao>Descrio 2</descricao> <largura>400</largura> <altura>350</altura> </imagens> <imagens> <thumbs>galerias/imgThumbs/miniFOTO16.jpg</thumbs> <imagem>galerias/imgGrande/FOTO16.jpg</imagem> <titulo>Tec Per 1</titulo> <descricao>Descrio 3</descricao> <largura>400</largura> <altura>350</altura> </imagens> <imagens> <thumbs>galerias/imgThumbs/miniFOTO17.jpg</thumbs> <imagem>galerias/imgGrande/FOTO17.jpg</imagem> <titulo>Tec Per 1</titulo> <descricao>Descrio 4</descricao> <largura>400</largura> <altura>350</altura> </imagens> </galeria> Quem quiser ver esse script em ação pode ir na seguinte url: www.tecper.com.br/indextexte.php Como verão, só preciso que abra a popup com a imagem para finalizar esse flash. Fico no aguardo de possíveis ajudas. Compartilhar este post Link para o post Compartilhar em outros sites
Eder Fortunato 15 Denunciar post Postado Abril 20, 2008 o problema deve ser o mesmo que aconteceu nesse tópico []´s Compartilhar este post Link para o post Compartilhar em outros sites