Comunidad de diseño web y desarrollo en internet online

Erros en Galería de fotos AS3

Citar            
MensajeEscrito el 24 Mar 2011 03:58 pm
Muy buenas:

He intentado traducir una galería de fotos que estaba programada en AS2 a AS3. Cuando pruebo la película no me saca ningún error, pero no hace nada. Ni muestra las imágenes ni nada. Os dejo el código a ver si alguien me ayuda a detectar que está fallando.

Gracias

Código ActionScript :

// acciones en fotograma 1
stop();
XML.prototype.ignoreWhite = true;
import flash.display.Loader;       
import flash.display.LoaderInfo;
import flash.net.URLRequest;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.geom.ColorTransform;

// separacion-> distancia entre las imágenes
// tanto horizontal como vertical
var separacion:Number = 110;
var separacion2:Number = 77;
// vbles para pasar de página
var pagina_actual:Number = 1;
var num_paginas:Number;
// array donde metemos los elementos del XML
var IMG_array:Array;
// objeto XML que carga la lista de miniaturas

var miniaturasXML:XML;
var loader:Loader;
var xmlLoader:URLLoader;
function Main() {
    loader = new Loader();
    addChild(loader);
    xmlLoader = new URLLoader(new URLRequest("../album/verMiniaturas.xml"));
   xmlLoader.addEventListener(Event.COMPLETE, mostrarMiniaturas);
}
var lienzo:MovieClip = new MovieClip();
lienzo.name = "lienzo_miniaturas";
// funcion que se ejecuta al cargar el XML
function mostrarMiniaturas() {
// contadores de columna y fila para
// disponer las miniaturas
var fila:Number = 0;
var col:Number = 0;
// paso los datos del XML al array
IMG_array = this.firstChild.childNodes;
// como caben 12 fotos por página podemos
// saber el núm de páginas necesarias para
// mostrar todas las fotos
num_paginas = Math.ceil(IMG_array.length/8);
// creo el clip donde meteremos todas las miniaturas

 
addChild(lienzo);// lo posiciono donde nos conviene

lienzo.x = 0;
lienzo.y = 0;
// y lo enmascaro con el clip situado en la
// capa mascara. se enmascara para hacer el deslizamiento del
// clip cuando tengamos muchas miniaturas y no entren todas a
// la vez en pantalla (nuestro caso)
lienzo.mask = mascara_mc;
// recorro el array que contiene la lista con los nombres de
// los archivos de las miniaturas e invoco la función crearMiniatura
// que es la que carga la imagen, la recoloca, le pone un pequeño
// marco y le asigna las acciones para verla ampliada
for (var k:Number = 0; IMG_array[k]; k++) {
// extraigo la ruta del archivo de imagen
//var ruta:String = "minis/"+IMG_array[k].attributes.nombre;
// como sólo tengo tres columnas, cuando llegue a
// la tercera, avanzo una fila y retorno a la primera
if (col>1) {
col = 0;
fila++;
}
// creo la miniatura. extraigo la ruta del archivo de imagen
// y la paso como tercer parámetro
crearMiniatura(col, fila, IMG_array[k].attributes.nombre);
col++;
}
}

function crearMiniatura(columnaF:Number, filaF:Number, ruta:String) {
// bajo_clip es el clip que contendrá el marco de la miniatura
var bajo_clip:MovieClip = new MovieClip();
clip.name = "bajo_"+filaF+"_"+columnaF; 
lienzo.addChild(bajo_clip);

// clip contendrá la imagen
var clip:MovieClip = new MovieClip(); 
clip.name = "foto_"+filaF+"_"+columnaF; 
lienzo.addChild(clip);
// para cargar la miniatura definimos un objeto MovieClipLoader
// y un objeto detector de eventos
var mi_mcl:Loader = new Loader();
var myRequest:URLRequest =       
new URLRequest("album/minis/"+ruta);
mi_mcl.load(myRequest);

mi_mcl.contentLoaderInfo.addEventListener(Event.OPEN,showPreloader);
mi_mcl.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
mi_mcl.contentLoaderInfo.addEventListener(Event.COMPLETE,showLoadResult);

function showPreloader(evt:Event):void {
// cuando comienza la carga de la imagen
// ponemos al _alpha a 0
mi_mcl.alpha = 0;
};
function showProgress(evt:ProgressEvent):void {
// aquí podéis poner acciones para mostrar una precarga,
// este caso no lo hemos considerado oportuno
};
// cuando ya se ha completado la carga y tenemos disponible el clip
function showLoadResult(evt:Event):void {
// recolocamos la imagen (todavía está oculta, con _alpha=0)
mi_mcl.x = (separacion*columnaF)+(100-mi_mcl.width)*0.5;
mi_mcl.y = (separacion2*filaF)+(67-mi_mcl.height)*0.5;
// recolocamos el marco que rodea a la foto
bajo_clip.x = mi_mcl.x;
bajo_clip.y = mi_mcl.y;
// dibujamos el marco
with (bajo_clip) {
beginFill(0x516d6e);
lineStyle(1, 0x516d6e, 100);
lineTo(mi_mcl._width, 0);
lineTo(mi_mcl._width, mi_mcl._height);
lineTo(0, mi_mcl._height);
lineTo(0, 0);
endFill();
}
// al pinchar sobre el área del marco,
// mostramos la foto grande con la función
// verFotoGrande
bajo_clip.addEventListener(MouseEvent.CLICK, verFotoGrande(ruta));
// muestro la miniatura animando el _alpha hasta 100
var myTween:Tween = new Tween(mi_mcl, "_alpha", Regular.easeOut, 0, 100, 2, true);
};
}

function verFotoGrande(ruta:String) {
// creo el clip donde irá la foto grande en una profundidad fija
// para que se reemplace cada vez que pincho en una miniatura
var grande:MovieClip = new MovieClip();
grande.name = "grande_mc", 2*IMG_array.length+11;
addChild(grande);
// igual con el clip que contendrá el marco
var bajo_grande:MovieClip = new MovieClip();
bajo_grande.name = "bajo_grande_mc", 2*IMG_array.length+10;
addChild(bajo_grande);
// posición vertical fija
grande.y = 0;
// para cargar la foto grnade definimos otro objeto MovieClipLoader
// y otro objeto detector de eventos
var grande_mcl:Loader = new Loader();
var myRequest:URLRequest =       
new URLRequest("album/originales/"+ruta);
grande_mcl.load(myRequest);

grande_mcl.contentLoaderInfo.addEventListener(Event.OPEN,showPreloader);
grande_mcl.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
grande_mcl.contentLoaderInfo.addEventListener(Event.COMPLETE,showLoadResult);

function showPreloader(evt:Event):void {
// aplico una transformación de color que deja el clip
// tintado de blanco
var newColorTransform = grande_mcl.transform.colorTransform;
newColorTransform.color = {ra:100, rb:255, ga:100, gb:255, ba:100, bb:255, aa:100, ab:0};
grande_mcl.transform.colorTransform = newColorTransform;

};
function showProgress(evt:ProgressEvent):void {
// aquí podéis poner acciones para mostrar una precarga,
// este caso no lo hemos considerado oportuno
// aquí podéis poner acciones para mostrar una precarga,
// este caso no lo hemos considerado oportuno
};
function showLoadResult(evt:Event):void {
// recolocamos la imagen (todavía está oculta)
grande_mcl.x = 210+Math.round((455-grande_mcl.width)*0.5);
// recolocamos el marco que rodea a la foto grande
bajo_grande.x = grande_mcl.x;
bajo_grande.y = grande_mcl.y;
// dibujamos el marco
with (bajo_grande) {
beginFill(0x516d6e);
lineStyle(1, 0x516d6e, 100);
lineTo(target_mc._width, 0);
lineTo(target_mc._width, target_mc._height);
lineTo(0, target_mc._height);
lineTo(0, 0);
endFill();
}
// con estas rutinas hacemos la transición de color desde el blanco
var indiceColor:Number = 255;
var intervaloColor = setInterval(cambiarColor, 0);
function cambiarColor() {
var newColorTransform = grande_mcl.transform.colorTransform;
newColorTransform.color = {ra:100, rb:indiceColor, ga:100, gb:indiceColor, ba:100, bb:indiceColor, aa:100, ab:0};
grande_mcl.transform.colorTransform = newColorTransform;
indiceColor -= 2;
if (indiceColor == -1) {
clearInterval(intervaloColor);
}
}
};
}

// con esta función desplazo el lienzo de las miniaturas para
// pasar de página
function moverLienzo(posY:Number) {
var myTween:Tween = new Tween(lienzo, "y", Regular.easeOut, lienzo.y, posY, 1, true);
}
// deshabilito de inicio el botón de volver atrás
// ya que se muestra la página 1

Por Goole

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Mar 2011 02:53 pm
200 y pico de líneas es mucho para mirar, pero empieza verificando que se ha cargado el XML y que se ejecuta el callback mostrarMiniaturas, y de allí que cada clip que creas este cargando el contenido. Lo puedes hacer agregando algunos trace

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.