Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Citeli

[Resolvido] Galeria em flash + xml

Recommended Posts

Prezados,

 

Achei esta galeria no site do lucas ferreira, é uma galeria simples ao meu ver e funciona exatamente como eu preciso, claro que sem os efeitos, mas isso eu quero incluir depois.

 

Seguinte, esta galeria funciona na raiz do flash, mas se eu descer um nível ela nao funciona. Para ser mais clara, pois não sei muito bem o linguajar dos Flashmaníacos, seria assim.

 

Eu quero incluir esta galeria dentro da minha biblioteca que já está toda funcionaal no flash, esta galeria irá carregar dentro de um movieclip, o problema é: quando a insiro no movieclip ele para de funcionar, o que me parece ter algo ligado na hora de chamar os arquivos como imagens em miniatura e etc. Alguém pode me dar uma luz para fazer tudo subir para o palco?

 

Segue o unico ACTION que há na galeria.

//variaveis da sequencia...
var fotos:Array = new Array;
//função de inicio do projeto...
function init():Void {
	//carregando xml...
	var loadDados:XML = new XML();
	loadDados.ignoreWhite = true;
	loadDados.onLoad = function(sucess) {
		if (sucess) {
			//primeiro nó: fotos;
			var f = this.firstChild.childNodes;
			//listando conteúdo do nó e inserindo no array de fotos
			for (var i = 0; i<f.length; i++) {
				var novaimg:Object = new Object(); //criando o objeto de cada foto
				novaimg.img_p = f[i].attributes.fp;
				novaimg.img_g = f[i].attributes.fg;
				fotos.push(novaimg); //inserindo objeto no array
			}
			//chamando função q faz a galeria...
			criaGaleria();
		}
	};
	//load no arquivo .xml
	loadDados.load("fotos.xml");
}
//função que cria a galeria
function criaGaleria():Void {
	car._visible = 0;
	//preloader de imagens grande, usando MovieClipLoader...
	//fica livre para usar como quiser...
	var mvlIMG:MovieClipLoader = new MovieClipLoader();
	var mvlOBJ:Object = new Object();
	mvlOBJ.onLoadStart = function(){
		car._visible = 1;
	}
	mvlOBJ.onLoadProgress = function(obj, bl, bt){
		var p = (Math.round(bl/bt) * 100) //porcentagem carregada da imagem
		car.p.text = "Carregando... " + p + "%";
	}
	mvlOBJ.onLoadComplete = function(){
		car._visible = 0;
	}
	mvlIMG.addListener(mvlOBJ);
	//
	//criando sistema de galeria(quantidade de fotos, fotos por pagina, colunas, altura miniatura, largura, espacamento x, e y);
	_global.galeria1 = new Distribute(fotos.length, 10, 2, 175, 106, 1, 1);
	//
	var objGal1:Object = new Object();
	objGal1.onDistStart = function() {
		//ação de inicio da distribuição das fotos...
		//verifica se o mc já está no palco, caso esteja, remove para nova página...
		if(_root.miniaturas){
			//removendo miniaturas anteriores na troca de pagina...
			_root.miniaturas.removeMovieClip();
		}
		//duplicando o mc conteiner q vai conter as miniaturas, para um novo que poder ser removido...
		_root.conteinerInicial.duplicateMovieClip("miniaturas", 1);
		//definindo onde o mcConteiner deve aparecer...
		miniaturas._x = conteinerInicial._x; // _x
		miniaturas._y = conteinerInicial._y; // _y
		//escondendo...
		miniaturas._visible = 0;
	};
	//
	objGal1.onDistUpdate = function(info:Object) {
		//puxando da bliblioteca o mc com linkage miniatura, e ja posicionando de arquivo com o _x e _y passados pelo var info...
		_root.miniaturas.attachMovie("miniatura", "fp_"+info.iObj, galeria1.nDepth(_root.miniaturas), {_x:info.x, _y:info.y});
		//informando ou passando, para miniatura, qual é sua foto grande...
		_root.miniaturas["fp_"+info.iObj].img_g = fotos[info.index].img_g;
		//criando o movie clip alvo para receber a img pequena, dentro do mc Conteiner...
		_root.miniaturas["fp_"+info.iObj].createEmptyMovieClip("img_p", 1);
		//carregando thumb via loadMovie...
		_root.miniaturas["fp_"+info.iObj].img_p.loadMovie(fotos[info.index].img_p);
		//definindo ação de clique na miniatura, para ampliar...
		_root.miniaturas["fp_"+info.iObj].onRelease = function(){
			//usando o obj mvlIMG, para carregar a imagem grande...
			mvlIMG.loadClip(this.img_g, img_grande);
		}
	};
	objGal1.onDistEnd = function(info:Object) {
		//ação de distribuição completa, exibindo mc Conteiner, chamado de miniaturas...
		miniaturas._visible = 1;
	};
	//definindo ao objeto galeria1, os objetos e eventos que deve utilizar...
	galeria1.addEventListener("onDistStart", objGal1);
	galeria1.addEventListener("onDistUpdate", objGal1);
	galeria1.addEventListener("onDistEnd", objGal1);
	//
	//montando paginação, pegase o nº de paginas e faz o paginador...
	//função responsável pelo click dos bts da paginação...
	function setPg(obj){
		//restaurando todos bts, para o primeiro frame...
		for (i=0; i<galeria1.nPages; i++) {
			var mcPgAtual = this._parent["mcPg_" add i];
			if(mcPgAtual != this) mcPgAtual.gotoAndStop(1); //todos voltam menos o atual...
		}
		//definindo o frame q deve mostrar...
		this.lastFrame = 3;
		//mostrando página solicitada...
		var iAtual:Number = int(this.pg.text);
		galeria1.showPage(iAtual);
	}
	for (i=0; i<galeria1.nPages; i++) {
		//ataxando ao mc vazio, paginacao, os bts de página...
		var mcPgAtual = paginacao.attachMovie("mcPg", "mcPg_" add i, i);
		mcPgAtual._x = (i*(mcPgAtual._width+3)); //posicionando bt no mc...
		mcPgAtual.pg.text = (i+1); //setando no bt, a pg dele...
		//definindo eventos e ações paga o bt da página...
		mcPgAtual.onRollOver = function(){
			//pega o frame atual e armazena, caso o bt seja o bt de página clicada...
			this.lastFrame = this._currentframe;
			//ao passar porcima acende
			this.gotoAndStop(2);
		}
		mcPgAtual.onRollOut = function(){
			this.gotoAndStop(this.lastFrame);
		}
		mcPgAtual.onRelease = setPg;
	}
	//
	//mostrando pagina 1 e setando o botão de pg 1...
	paginacao["mcPg_0"].gotoAndStop(3);
	galeria1.showPage(1);
}
//
//iniciando por fim, a galeria...
init();

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema ai é a referencia ao _root, pois _root é a timeline principal, onde tem _root no seu códgo, você deve trocar por uma referencia ao movieclip, você pode até criar uma variavel fora da função que atribua seu valor a timeline em questão, por exemplo var here = this; e onde tiver o _root no seu código, você troca por here, ficando mais ou menos assim:

 

var here = this;
//variaveis da sequencia...
var fotos:Array = new Array;
//função de inicio do projeto...
function init():Void {
        //carregando xml...
        var loadDados:XML = new XML();
        loadDados.ignoreWhite = true;
        loadDados.onload = function(sucess) {
                if (sucess) {
                        //primeiro nó: fotos;
                        var f = this.firstChild.childNodes;
                        //listando conteúdo do nó e inserindo no array de fotos
                        for (var i = 0; i<f.length; i++) {
                                var novaimg:Object = new Object(); //criando o objeto de cada foto
                                novaimg.img_p = f[i].attributes.fp;
                                novaimg.img_g = f[i].attributes.fg;
                                fotos.push(novaimg); //inserindo objeto no array
                        }
                        //chamando função q faz a galeria...
                        criaGaleria();
                }
        };
        //load no arquivo .xml
        loadDados.load("fotos.xml");
}
//função que cria a galeria
function criaGaleria():Void {
        car._visible = 0;
        //preloader de imagens grande, usando MovieClipLoader...
        //fica livre para usar como quiser...
        var mvlIMG:MovieClipLoader = new MovieClipLoader();
        var mvlOBJ:Object = new Object();
        mvlOBJ.onloadStart = function(){
                car._visible = 1;
        }
        mvlOBJ.onloadProgress = function(obj, bl, bt){
                var p = (Math.round(bl/bt) * 100) //porcentagem carregada da imagem
                car.p.text = "Carregando... " + p + "%";
        }
        mvlOBJ.onloadComplete = function(){
                car._visible = 0;
        }
        mvlIMG.addListener(mvlOBJ);
        //
        //criando sistema de galeria(quantidade de fotos, fotos por pagina, colunas, altura miniatura, largura, espacamento x, e y);
        _global.galeria1 = new Distribute(fotos.length, 10, 2, 175, 106, 1, 1);
        //
        var objGal1:Object = new Object();
        objGal1.onDistStart = function() {
                //ação de inicio da distribuição das fotos...
                //verifica se o mc já está no palco, caso esteja, remove para nova página...
                if(here.miniaturas){
                        //removendo miniaturas anteriores na troca de pagina...
                        here.miniaturas.removeMovieClip();
                }
                //duplicando o mc conteiner q vai conter as miniaturas, para um novo que poder ser removido...
                here.conteinerInicial.duplicateMovieClip("miniaturas", 1);
                //definindo onde o mcConteiner deve aparecer...
                miniaturas._x = conteinerInicial._x; // _x
                miniaturas._y = conteinerInicial._y; // _y
                //escondendo...
                miniaturas._visible = 0;
        };
        //
        objGal1.onDistUpdate = function(info:Object) {
                //puxando da bliblioteca o mc com linkage miniatura, e ja posicionando de arquivo com o _x e _y passados pelo var info...
                here.miniaturas.attachMovie("miniatura", "fp_"+info.iObj, galeria1.nDepth(here.miniaturas), {_x:info.x, _y:info.y});
                //informando ou passando, para miniatura, qual é sua foto grande...
                here.miniaturas["fp_"+info.iObj].img_g = fotos[info.index].img_g;
                //criando o movie clip alvo para receber a img pequena, dentro do mc Conteiner...
                here.miniaturas["fp_"+info.iObj].createEmptyMovieClip("img_p", 1);
                //carregando thumb via loadMovie...
                here.miniaturas["fp_"+info.iObj].img_p.loadMovie(fotos[info.index].img_p);
                //definindo ação de clique na miniatura, para ampliar...
                here.miniaturas["fp_"+info.iObj].onRelease = function(){
                        //usando o obj mvlIMG, para carregar a imagem grande...
                        mvlIMG.loadClip(this.img_g, img_grande);
                }
        };
        objGal1.onDistEnd = function(info:Object) {
                //ação de distribuição completa, exibindo mc Conteiner, chamado de miniaturas...
                miniaturas._visible = 1;
        };
        //definindo ao objeto galeria1, os objetos e eventos que deve utilizar...
        galeria1.addEventListener("onDistStart", objGal1);
        galeria1.addEventListener("onDistUpdate", objGal1);
        galeria1.addEventListener("onDistEnd", objGal1);
        //
        //montando paginação, pegase o nº de paginas e faz o paginador...
        //função responsável pelo click dos bts da paginação...
        function setPg(obj){
                //restaurando todos bts, para o primeiro frame...
                for (i=0; i<galeria1.nPages; i++) {
                        var mcPgAtual = this._parent["mcPg_" add i];
                        if(mcPgAtual != this) mcPgAtual.gotoAndStop(1); //todos voltam menos o atual...
                }
                //definindo o frame q deve mostrar...
                this.lastFrame = 3;
                //mostrando página solicitada...
                var iAtual:Number = int(this.pg.text);
                galeria1.showPage(iAtual);
        }
        for (i=0; i<galeria1.nPages; i++) {
                //ataxando ao mc vazio, paginacao, os bts de página...
                var mcPgAtual = paginacao.attachMovie("mcPg", "mcPg_" add i, i);
                mcPgAtual._x = (i*(mcPgAtual._width+3)); //posicionando bt no mc...
                mcPgAtual.pg.text = (i+1); //setando no bt, a pg dele...
                //definindo eventos e ações paga o bt da página...
                mcPgAtual.onRollOver = function(){
                        //pega o frame atual e armazena, caso o bt seja o bt de página clicada...
                        this.lastFrame = this._currentframe;
                        //ao passar porcima acende
                        this.gotoAndStop(2);
                }
                mcPgAtual.onRollOut = function(){
                        this.gotoAndStop(this.lastFrame);
                }
                mcPgAtual.onRelease = setPg;
        }
        //
        //mostrando pagina 1 e setando o botão de pg 1...
        paginacao["mcPg_0"].gotoAndStop(3);
        galeria1.showPage(1);
}
//
//iniciando por fim, a galeria...
init();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Carneirinho, Fico muito grata em sua pronta ajuda. Tentei fazer o que você sugeriu mas não deu certo...

 

Arquivos da galeria

 

Envio aqui o link de onde estão os arquivos FLA, veja, o arquivo galeria.fla refere ao que eu pretendo fazer em minha galeria, e o arquivo galeria_funcional.fla é o que eu baixei do site do Lucas.

 

Aguardo seu retorno.

 

E desde já agradeço sua atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

O que ele postou está correto é porque você não entendeu o que ele quis dizer...

 

O seu problema está no escopo onde você está tentando fazer referência as suas funções e váriaveis.

 

Uma das opções, em resumo, é usar seuConteiner_mc. como prefixo de todas as funções e váriáveis que você estiver usando na sua galeria, como segue:

 

...
_root.seuConteiner_mc.galeria1.addEventListener("onDistStart", _root.seuConteiner_mc.objGal1);
_root.seuConteiner_mc.galeria1.addEventListener("onDistUpdate",_root.seuConteiner_mc.objGal1);
_root.seuConteiner_mc.galeria1.addEventListener("onDistEnd", _root.seuConteiner_mc.objGal1);
...
_root.seuConteiner_mc.paginacao["mcPg_0"].gotoAndStop(3);
_root.seuConteiner_mc.galeria1.showPage(1);

Onde seuConteiner_mc é nome do movieClip que carrega sua galeria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Desenvolvedor Roger

 

Eu fiz o que você informou, onde você diz seuConteiner_mc eu colquei total_mc fazendo a ligação na biblioteca.

 

Olhei o código tentando achar algum erro referente ao informado por você mas não achei, será que fiz algo de errado? Ou ficou faltando?

 

Ahn, a tempo, onde colocar este action? Na timeline do mc que eu quero que apareça a galeria? Ou lá dentro do mc que tem a galeria abaixo? Atualmente este Action está na time line principal onde o primeiro layer é o action, o segundo layer, no primeiro frame, o mc total_mc.

 

Ao testar o filme não dá erro nenhum por isto estou perdida, :( :(

 

HELP!

 

http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

O meu código agora ficou assim:

 

//variaveis da sequencia...
var fotos:Array = new Array;
//função de inicio do projeto...
function init():Void {
	//carregando xml...
	var loadDados:XML = new XML();
	loadDados.ignoreWhite = true;
	loadDados.onLoad = function(sucess) {
		if (sucess) {
			//primeiro nó: fotos;
			var f = this.firstChild.childNodes;
			//listando conteúdo do nó e inserindo no array de fotos
			for (var i = 0; i<f.length; i++) {
				var novaimg:Object = new Object(); //criando o objeto de cada foto
				novaimg.img_p = f[i].attributes.fp;
				novaimg.img_g = f[i].attributes.fg;
				fotos.push(novaimg); //inserindo objeto no array
			}
			//chamando função q faz a galeria...
			criaGaleria();
		}
	};
	//load no arquivo .xml
	loadDados.load("fotos.xml");
}
//função que cria a galeria
function criaGaleria():Void {
	car._visible = 0;
	//preloader de imagens grande, usando MovieClipLoader...
	//fica livre para usar como quiser...
	var mvlIMG:MovieClipLoader = new MovieClipLoader();
	var mvlOBJ:Object = new Object();
	mvlOBJ.onLoadStart = function(){
		car._visible = 1;
	}
	mvlOBJ.onLoadProgress = function(obj, bl, bt){
		var p = (Math.round(bl/bt) * 100) //porcentagem carregada da imagem
		car.p.text = "Carregando... " + p + "%";
	}
	mvlOBJ.onLoadComplete = function(){
		car._visible = 0;
	}
	mvlIMG.addListener(mvlOBJ);
	//
	//criando sistema de galeria(quantidade de fotos, fotos por pagina, colunas, altura miniatura, largura, espacamento x, e y);
	_root.total_mc.galeria1 = new Distribute(fotos.length, 8, 2, 80, 60, 4, 3);
	//
	var objGal1:Object = new Object();
	_root.total_mc.objGal1.onDistStart = function() {
		//ação de inicio da distribuição das fotos...
		//verifica se o mc já está no palco, caso esteja, remove para nova página...
		if(_root.total_mc.miniaturas){
			//removendo miniaturas anteriores na troca de pagina...
			_root.total_mc.miniaturas.removeMovieClip();
		}
		//duplicando o mc conteiner q vai conter as miniaturas, para um novo que poder ser removido...
		_root.total_mc.conteinerInicial.duplicateMovieClip("miniaturas", 1);
		//definindo onde o mcConteiner deve aparecer...
		miniaturas._x = conteinerInicial._x; // _x
		miniaturas._y = conteinerInicial._y; // _y
		//escondendo...
		miniaturas._visible = 0;
	};
	//
	_root.total_mc.objGal1.onDistUpdate = function(info:Object) {
		//puxando da bliblioteca o mc com linkage miniatura, e ja posicionando de arquivo com o _x e _y passados pelo var info...
		_root.total_mc.miniaturas.attachMovie("miniatura", "fp_"+info.iObj, galeria1.nDepth(_root.total_mc.miniaturas), {_x:info.x, _y:info.y});
		//informando ou passando, para miniatura, qual é sua foto grande...
		_root.total_mc.miniaturas["fp_"+info.iObj].img_g = fotos[info.index].img_g;
		//criando o movie clip alvo para receber a img pequena, dentro do mc Conteiner...
		_root.total_mc.miniaturas["fp_"+info.iObj].createEmptyMovieClip("img_p", 1);
		//carregando thumb via loadMovie...
		_root.total_mc.miniaturas["fp_"+info.iObj].img_p.loadMovie(fotos[info.index].img_p);
		//definindo ação de clique na miniatura, para ampliar...
		_root.total_mc.miniaturas["fp_"+info.iObj].onRelease = function(){
			//usando o obj mvlIMG, para carregar a imagem grande...
			mvlIMG.loadClip(this.img_g, img_grande);
		}
	};
	_root.total_mc.objGal1.onDistEnd = function(info:Object) {
		//ação de distribuição completa, exibindo mc Conteiner, chamado de miniaturas...
		miniaturas._visible = 1;
	};
	//definindo ao objeto galeria1, os objetos e eventos que deve utilizar...
	_root.total_mc.galeria1.addEventListener("onDistStart", _root.total_mc.objGal1);
	_root.total_mc.galeria1.addEventListener("onDistUpdate", _root.total_mc.objGal1);
	_root.total_mc.galeria1.addEventListener("onDistEnd", _root.total_mc.objGal1);
	//
	//montando paginação, pegase o nº de paginas e faz o paginador...
	//função responsável pelo click dos bts da paginação...
	function setPg(obj){
		//restaurando todos bts, para o primeiro frame...
		for (i=0; i<galeria1.nPages; i++) {
			var mcPgAtual = this._root.total_mc["mcPg_" add i];
			if(mcPgAtual != this) mcPgAtual.gotoAndStop(1); //todos voltam menos o atual...
		}
		//definindo o frame q deve mostrar...
		this.lastFrame = 3;
		//mostrando página solicitada...
		var iAtual:Number = int(this.pg.text);
		_root.total_mc.galeria1.showPage(iAtual);
	}
	for (i=0; i<galeria1.nPages; i++) {
		//ataxando ao mc vazio, paginacao, os bts de página...
		var mcPgAtual = paginacao.attachMovie("mcPg", "mcPg_" add i, i);
		mcPgAtual._x = (i*(mcPgAtual._width+3)); //posicionando bt no mc...
		mcPgAtual.pg.text = (i+1); //setando no bt, a pg dele...
		//definindo eventos e ações paga o bt da página...
		mcPgAtual.onRollOver = function(){
			//pega o frame atual e armazena, caso o bt seja o bt de página clicada...
			this.lastFrame = this._currentframe;
			//ao passar porcima acende
			this.gotoAndStop(2);
		}
		mcPgAtual.onRollOut = function(){
			this.gotoAndStop(this.lastFrame);
		}
		mcPgAtual.onRelease = setPg;
	}
	//
	//mostrando pagina 1 e setando o botão de pg 1...
	_root.total_mc.paginacao["mcPg_0"].gotoAndStop(3);
	_root.total_mc.galeria1.showPage(3);
}
//
//iniciando por fim, a galeria...
init();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um detalhe troque -> loadDados.onload por -> loadDados.onLoad//Aqui é um L mas o editor aqui não está aceitando...

 

Na timeline do mc que eu quero que apareça a galeria? Ou lá dentro do mc que tem a galeria abaixo?

Estive vendo aqui e eu já tinha te adicionado no meu msn então para agilizar(estou com sono) eu vou estar lá rapidão aí fica mais fácil para você me explicar...

 

Se não der para você agora, amanhã eu te dou uma mão nisso aí...

 

EDIT: Tópico resolvido

 

Como eu estava com sono pedi logo para que ela fizesse um -> loadMovieNum("galeria.swf",1);

 

Vou dormir agora... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.