( lo que está en bold)
si tu monitor esta a 800 x 600 pixeles:
Aquí
si tu monitor está a 1024 x 768 pixeles:
Aquí
el codigo en los archivos (.as):
en el archivo (Foto.as)
class cristalab.galeria.Foto {
private var ruta_mc:MovieClip;
private var popup_mc:MovieClip;
private var ambito;
private var imagen:Number;
function Foto(imagen:Number, ruta:MovieClip) {
var init:Object;
init.img = imagen;
this.imagen = imagen;
ruta_mc = ruta;
ruta_mc.attachMovie("fPopup", "pop_mc", ruta_mc.getNextHighestDepth(), init);
popup_mc = ruta_mc.pop_mc;
ubicar();
}
public function reload():Void {
popup_mc.container_mc.img_mc._x = popup_mc.container_mc.img_mc._y=0;
popup_mc.container_mc.img_mc.unloadMovie();
cargarImagen();
}
public function atras():Void {
if (this.imagen>1) {
imagen--;
reload();
}
}
public function adelante():Void {
if (this.imagen<ruta_mc.galeria.nImagenes) {
imagen++;
reload();
}
}
public function ubicar():Void {
popup_mc._x = (ruta_mc._width/2)-(popup_mc._width/2);
popup_mc._y = (ruta_mc._height/2)-(popup_mc._height/2);
}
public function cargarImagen():Void {
with (popup_mc) {
cerrar_btn.enabled = atras_btn.enabled=adelante_btn.enabled=false;
navbar_mc._visible = false;
}
var precarga:Preloader = new Preloader(popup_mc.container_mc.img_mc, _global.imgRuta+"/images/normal/"+imagen+".jpg", popup_mc.drw_mc, popup_mc.container_mc, this, onLoadImg,true);
}
private function onLoadImg():Void {
//ruta_mc.img_mc._visible=false;
ruta_mc.img_mc._x=ruta_mc.img_mc._y=0;
var hilo = setInterval(function (amb) {
ruta_mc.img_mc._x = (ruta_mc._width/2)-(ruta_mc.img_mc._width/2);
ruta_mc.img_mc._y = (ruta_mc._height/2)-(ruta_mc.img_mc._height/2);
amb.showElements();
clearInterval(hilo);
}, 100,ambito);
}
private function showElements() {
popup_mc.container_mc.img_mc._visible=true;
popup_mc.container_mc.img_mc.useHandCursor = false;
popup_mc.container_mc.img_mc.clase = this;
popup_mc.container_mc.img_mc.ruta_mc = ruta_mc;
popup_mc.container_mc.attachMovie("transicion","trans_mc",popup_mc.container_mc.getNextHighestDepth());
popup_mc.container_mc.img_mc.onRollOver = function() {
Mouse.hide();
var init:Object = new Object();
init._x = ruta_mc._xmouse;
init._y = ruta_mc._ymouse;
ruta_mc.cursor_mc.removeMovieClip();
ruta_mc.attachMovie("handCursor", "cursor_mc", ruta_mc.getNextHighestDepth(), init);
};
popup_mc.container_mc.img_mc.onRollOut = function() {
Mouse.show();
ruta_mc.cursor_mc.removeMovieClip();
};
popup_mc.container_mc.img_mc.onMouseDown = function() {
this.startDrag(false, 0, 0, -1*(this._width)+366.7, -1*(this._height)+363.9);
Mouse.hide();
var init:Object = new Object();
init._x = ruta_mc._xmouse;
init._y = ruta_mc._ymouse;
ruta_mc.cursor_mc.removeMovieClip();
ruta_mc.attachMovie("handCursor", "cursor_mc", ruta_mc.getNextHighestDepth(), init);
};
popup_mc.container_mc.img_mc.onMouseMove = function() {
ruta_mc.cursor_mc._x = ruta_mc._xmouse;
ruta_mc.cursor_mc._y = ruta_mc._ymouse;
this.clase.drawZoom(ruta_mc.pop_mc.bb);
updateAfterEvent();
};
popup_mc.container_mc.img_mc.onMouseUp = function() {
Mouse.show();
this.stopDrag();
ruta_mc.cursor_mc.removeMovieClip();
};
popup_mc.titulo_txt.text = ".:: Imagen Nº "+imagen+" ::.";
popup_mc.navbar_mc.imagen_txt.text = "Imagen Nº "+imagen;
with (popup_mc) {
cerrar_btn.enabled = atras_btn.enabled=adelante_btn.enabled=true;
navbar_mc._visible = true;
navbar_mc.tamano_txt.text = container_mc.img_mc._width+"px x "+container_mc.img_mc._height+"px";
}
}
public function drawZoom(board_mc:MovieClip):Void {
var con_mc:MovieClip = popup_mc.container_mc.img_mc;
board_mc.clear();
board_mc.lineStyle(1, 0x000000, 100);
board_mc.beginFill(0xFFFFFF, 50);
board_mc.moveTo(0, 0);
board_mc.lineTo(con_mc._width*.1, 0);
board_mc.lineTo(con_mc._width*.1, con_mc._height*.1);
board_mc.lineTo(0, con_mc._height*.1);
board_mc.endFill();
var x:Number = -1*(con_mc._x*.1);
var y:Number = -1*(con_mc._y*.1);
board_mc.moveTo(x, y);
board_mc.lineTo(x, y+36.43);
board_mc.lineTo(x+33.69, y+36.43);
board_mc.lineTo(x+33.69, y);
board_mc.lineTo(x, y);
}
}
en el archivo (Imagenes.as)
class cristalab.galeria.Imagenes {
//Aqui sabre el ambito en el que estoy, no es bueno usar _root
var ruta_mc:MovieClip;
//En esta variable se cargara el titulo de la galeria
private var tit:String;
//Aqui el numero de imagenes que tiene
private var nImg:Number;
//Fotografia grande
public var foto:Foto;
//Esta sera nuestra variable de paginación de fotos
private var paginas:Array;
//Esta dira la pagina actual
private var pActual:Number;
//Hilos de aparición
private var hilos:Array;
/*Evento lanzando al terminar de cargar
A que es una manera creativa de crear eventos, no? */
public var onCarga:Function;
//Constructor de la clase
function Imagenes(archXML:String, ruta:MovieClip) {
var conf_xml:XML;
tit = new String();
nImg = new Number();
pActual = new Number();
onCarga = null;
ruta_mc = ruta;
_global.esto = this;
conf_xml = new XML();
conf_xml.ignoreWhite = true;
conf_xml.onLoad = cargarXML;
conf_xml.load(archXML);
}
//función asignada a objeto XML para cargar
private function cargarXML(exito:Boolean) {
if (exito) {
var nodo:XML = new XML();
//Extraño, inconcluso pero necesario Cast
nodo = XML(this);
_global.esto.titulo = nodo.firstChild.childNodes[1].firstChild.nodeValue;
_global.esto.nImagenes = nodo.firstChild.childNodes[0].firstChild.nodeValue;
_global.imgRuta = nodo.firstChild.childNodes[2].firstChild.nodeValue;
_global.esto.onCarga();
} else {
trace("Error al cargar XML");
}
}
//repagina los thumbnails
public function paginar():Void {
var i:Number;
var tam:Number;
var mod:Number;
tam = parseInt(String(nImagenes/18 ));
paginas = new Array(tam);
for (i=0; i<paginas.length; i++) {
paginas[i] = 18;
}
mod = nImagenes%18;
if (mod) {
paginas[tam] = mod;
}
}
//Redibuja las fotos en el escenario
public function cambiarPagina(pagina:Number) {
var i:Number;
var elem:Number;
var init:Object;
elem = paginas[pagina-1];
hilos = new Array(elem);
for (i=0; i<18; i++) {
ruta_mc["mFoto"+i].removeMovieClip();
}
for (i=0; i<elem; i++) {
init = new Object();
init = calcularPos(i);
init.elem = i;
init.img = i+(18*(pagina-1));
hilos[i] = setInterval(this.materializar, 20*(i+1), init);
init = null;
}
}
//Materializa cada imagen en el escenario
private function materializar(initObj:Object):Void {
_global.esto.ruta_mc.attachMovie("mFoto", "mFoto"+initObj.elem, initObj.elem+1, initObj);
clearInterval(_global.esto.hilos[initObj.elem]);
}
//Calcula la posición en la que debe aparecer cada objeto
private function calcularPos(nObjeto:Number):Object {
nObjeto++;
var obj:Object;
obj = new Object();
obj._x = obj._y=new Number();
if ((nObjeto%6) == 0) {
obj._x = 6;
obj._y = parseInt(String(nObjeto/6))-1;
} else {
obj._x = nObjeto%6;
obj._y = parseInt(String(nObjeto/6));
}
obj._y;
obj._y = _global.initY+((90+20)*(obj._y));
obj._x = _global.initX+((77+19)*(obj._x-1));
return obj;
}
public function openImg(imagen:Number):Void {
ruta_mc.createEmptyMovieClip("drw_mc", ruta_mc.getNextHighestDepth());
ruta_mc.drw_mc._x = ruta_mc.drw_mc._y=0;
ruta_mc.drw_mc.beginFill(0x999999, 50);
ruta_mc.drw_mc.moveTo(0, 0);
ruta_mc.drw_mc.lineTo(ruta_mc._width, 0);
ruta_mc.drw_mc.lineTo(ruta_mc._width, ruta_mc._height);
ruta_mc.drw_mc.lineTo(0, ruta_mc._height);
ruta_mc.drw_mc.endFill();
ruta_mc.drw_mc.useHandCursor = false;
ruta_mc.drw_mc.onRelease = function() {
//
};
foto = new Foto(imagen, ruta_mc);
}
public function closeImg():Void {
ruta_mc.drw_mc.removeMovieClip();
ruta_mc.pop_mc.removeMovieClip();
foto = null;
delete foto;
}
//Setters | Getters
public function get nImagenes():Number {
return this.nImg;
}
public function set nImagenes(numero:Number):Void {
this.nImg = numero;
}
public function get titulo() {
return ".:: "+this.tit+" ::.";
}
public function set titulo(nombre:String):Void {
this.tit = nombre;
}
public function get nPaginas():Number {
return Number(this.paginas.length);
}
}
en el archivo ( Mini.as )
class cristalab.galeria.Mini {
private var nFoto:Number;
private var ruta:String;
private var ruta_mc:MovieClip;
function Mini(mc:MovieClip, num:Number) {
num++;
setRuta(num);
nFoto = num;
ruta_mc = mc;
cargarFoto();
ruta_mc.onRelease = function() {
this.openImg(this.elem);
};
}
private function cargarFoto():Void {
var loader = ruta_mc.createEmptyMovieClip("foto_mc", 1);
var precarga:Preloader = new Preloader(loader, ruta, ruta_mc.drw_mc, ruta_mc, this, calcularPos,false);
}
private function calcularPos():Void {
var img_mc:MovieClip;
img_mc = ruta_mc.foto_mc;
img_mc._visible = false;
img_mc._x = img_mc._y=0;
var hilo = setInterval(function () {
img_mc._x = (77/2)-(img_mc._width/2);
img_mc._y = (90/2)-(img_mc._height/2);
img_mc._visible=true;
clearInterval(hilo);
}, 100);
}
private function setRuta(n:Number):Void {
ruta = new String();
ruta = _global.imgRuta+"/images/mini/mini"+n+".jpg";
}
}