Ir para conteúdo
Fórum Script Brasil
  • 0

Galeria Dinamica Em Flash


Guest - DiEgO -

Pergunta

Guest - DiEgO -

//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, 4, 2, 80, 60, 4, 3);
	//
	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 já 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.pgN);
  galeria1.showPage(iAtual);
	}
	//esse array contem o nome das páginas na ordem...
	var pgs:Array [SIZE=7]["10000","11000","1200","11600","11800","11900","12700","1500","2700","286","287","288","291","296","297"];[/SIZE]
	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.pgN = (i+1);
  mcPgAtual.pg.text = pgs[i];
  //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();
Isto acima e um .FLA
<?xml version="1.0" encoding="UTF-8"?>
<fotos>
  <foto fp="imgs/foto1p.jpg" fg="imgs/foto1g.jpg"/> 
  <foto fp="imgs/foto2p.jpg" fg="imgs/foto2g.jpg"/> 
  <foto fp="imgs/foto3p.jpg" fg="imgs/foto3g.jpg"/> 
  <foto fp="imgs/foto4p.jpg" fg="imgs/foto4g.jpg"/> 
  <foto fp="imgs/foto5p.jpg" fg="imgs/foto5g.jpg"/> 
  <foto fp="imgs/foto6p.jpg" fg="imgs/foto6g.jpg"/> 
  <foto fp="imgs/foto7p.jpg" fg="imgs/foto7g.jpg"/> 
  <foto fp="imgs/foto8p.jpg" fg="imgs/foto8g.jpg"/> 
  <foto fp="imgs/foto9p.jpg" fg="imgs/foto9g.jpg"/> 
  <foto fp="imgs/foto10p.jpg" fg="imgs/foto10g.jpg"/> 
</fotos>
Acima XML que busca as fotos.
import mx.events.EventDispatcher;

dynamic class Distribute {

	var _nObjs:Number, _npp:Number, _cols:Number;
	var __width:Number, __height:Number, _spacex:Number, _spacey:Number;

	function Distribute(n:Number,npp:Number,cols:Number,w:Number,h:Number,sx:Number,sy:Number)
	{
  _nObjs = n;
  __width = w;
  __height = h;
  _spacex = sx;
  _spacey = sy;
  _npp = npp;
  _cols = cols;
  //iniciando dispachador de eventos...
  EventDispatcher.initialize(this);  
	}

	public function nDepth(alvo:Object):Number
	{
  return alvo.getNextHighestDepth();
	}
	public function get nPages():Number
	{
  return Math.ceil(_nObjs / _npp);
	}

	public function showPage(pgAtual:Number):Void
	{
  var objGal = this;
  var _iCount = (pgAtual-1) * _npp;
  var _iColumm = 0;
  var _iLine = 0;
  var _xAtual:Number = 0;
  var _yAtual:Number = 0;
  //evento inicio de pagina...
  var listStartGalDist:Object = {type:"onDistStart", pg: pgAtual};
  objGal.dispatchEvent(listStartGalDist);
  //loop dos objetos...
  for(var i:Number = 1; i<=_npp; i++){
  	if(_iCount >= _nObjs) break;
  	//calculo de x e y...
  	if(_iColumm == 0){
    _xAtual = 0;
  	} else if(_iColumm < _cols) {
    _xAtual += (_spacex + __width);
  	} else {
    _iLine++;
    _xAtual = 0;
    _yAtual = (_spacey + __height) * _iLine;
    _iColumm = 0;
  	}
  	//dispachando eventos onGalDist...
  	var listGalDist:Object = {type:"onDistUpdate", index: _iCount, iObj: i, x: _xAtual, y: _yAtual};
  	objGal.dispatchEvent(listGalDist);
  	//somando ao i de index...
  	_iColumm++;
  	_iCount++;
  }
  //evento termino de pagina...
  var listEndGalDist:Object = {type:"onDistEnd", pg: pgAtual};
  objGal.dispatchEvent(listEndGalDist);
	}
}

Acima outro arquivo, do FLASH (Flash ActionScritp File).

Nos exemplos acima, na parte de colocar os nomes das páginas no .FLA (primeiro codigo) fica muito extenso os numeros e não cabe na pagina.

Pergunta: Como faço para colocar uns nomes acima e outros abaixo? blink.gif

PS: O criador da galeria e o Lucas Ferreira.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...