Comunidad de diseño web y desarrollo en internet online

Ayudarme a acabar la galeria, plis

Citar            
MensajeEscrito el 26 Ago 2008 06:02 pm
Buenas, aunque es mi primer post, hace ya tiempo que os leo, y muchos de los temas tratados me han ayudado.
Por eso antes de nada: GRACIAS

Ahora soy yo el que se ve en apuros por acabar una galería de fotos que me trae de cabeza.
Es una galería con carga dinámica en flash, en la que tengo originales (fotos grandes), minis (miniaturas), y asp con código para generar un xml, pero que no funcionaba y creé el xml "verMiniaturas.xml":

<?xml version="1.0" ?>
- <exploracion carpeta="minis">
<archivo nombre="ave.jpg" size="35" />
<archivo nombre="billar.jpg" size="40" />
<archivo nombre="bones.jpg" size="42" />
<archivo nombre="cafes.jpg" size="47" />
<archivo nombre="calculadora.jpg" size="35" />
<archivo nombre="cielo.jpg" size="36" />
<archivo nombre="chanclas.jpg" size="37" />
<archivo nombre="edificio.jpg" size="40" />
</exploracion>

Y en flash:

Código ActionScript :

var miniaturasXML:XML = new XML();
miniaturasXML.onLoad = mostrarMiniaturas;
miniaturasXML.load("verMiniaturas.xml");
function mostrarMiniaturas():Void {
var fila:Number = 0;
var col:Number = 0;
IMG_array = this.firstChild.childNodes;
num_paginas = Math.ceil(IMG_array.length/12);
var lienzo:MovieClip = _root.createEmptyMovieClip("lienzo_miniaturas", _root.getNextHighestDepth());
lienzo._x = 19;
lienzo._y = 100;
lienzo.setMask(mascara_mc);
for (var k:Number = 0; IMG_array[k]; k++) {
if (col>2) {
col = 0;
fila++;
}
crearMiniatura(col, fila, IMG_array[k].attributes.nombre);
col++;
}
}


El caso es que hago Ctrl+Intro, y se ven las miniaturas y funciona, sin embargo, cuando ejecuto el swf (fuera de flash) no funciona. :? Qué hago mal? Se me escapa algo y no doy con ello.
Echarme una mano, por favor.

Gracias

Ya direis algo.
Un saludo

Por cristalmon

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 26 Ago 2008 08:07 pm
No se que puede suceder, no se que hace la función "crearMiniatura" pero por lo pronto debes hacer un ciclo hasta la cantidad de nodos y en vez de esto:

Código ActionScript :

for (var k:Number = 0; IMG_array[k]; k++) {


Debes poner esto:

Código ActionScript :

for (var k:Number = 0; k < IMG_array.length; k++) {

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 27 Ago 2008 07:17 am
La función "crearMiniatura" genera las miniaturas de las fotos grandes.
Si eso te paso los archivos y así lo ves en el contexto general, que yo ando bizco ya de remirarlo.

Probaré con lo que me dices a ver si soluciono algo.
Ya te diré.

Un saludo

Por cristalmon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Ago 2008 05:53 pm
He probado cambiando esta línea de código que me indicas, pero no hay manera.
Con el flash abierto le doy a "Probar película" y se ve correctamente todo, carga las fotos pequeñas y luego se visualizan en grande al lado, correcto.

Pero voy al swf, y sale en blanco. Espero, porque no le he puesto preload en las imagenes, pero aquello se queda "ad eternum" sin salir.

Paso la dir donde está alojado (en pruebas) y lo veis: http://www.formatossl.com/formatos/wwwSANTOSdefinitiva/

Intento con ASP:

Código ActionScript :

<%
Response.Expires=0
Response.CacheControl="private"
' ----------------------------------------------------------------
Response.ContentType="text/XML"
'Creamos el objeto FileSystemObject
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(Server.MapPath(("/minis/"))) 
Set files = folder.Files '
' ----------------------------------------
Response.Write("<?xml version='1.0' ?><exploracion carpeta='"+folder.Name+"'>")
For Each file in files
fil=file.Name
Response.write("<archivo nombre='")
Response.write(file.Name)
Response.write("' size='")
Response.write(file.size\1024)
Response.Write("' />")
Next
Response.Write("</exploracion>")
' ----------------------------------------------------------------
Set files = nothing
Set folder = nothing
Set fso = nothing
%>


Pero tampoco.
¿Alguna sugerencia?
Espero me podais ayudar.
Gracias

Por cristalmon

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 Ago 2008 06:09 pm
Quién es "mascara_mc" y en que lugar lo creas?, intenta eliminar la máscara para ver si puedes ver las imágenes:

Código ActionScript :

lienzo.setMask(mascara_mc); //---Elimina esta linea por ahora


Con el ASP no te funcionará sino lo corres desde un servidor, pero primero intenta que te salga con un XML, solo entonces intenta con el ASP.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 28 Ago 2008 04:32 am
¿Cuál es el código que usas para cargar las imágenes? Lo que veo allí es el código para crear las miniaturas, pero no el que carga las imágenes. Si te carga correctamente en el entorno de Flash pero no cuando lo colocas en el html lo más probable (al menos es lo más común) es que tengas un problema de rutas.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

mozilla
Citar            
MensajeEscrito el 28 Ago 2008 06:09 pm

elchininet escribió:

Quién es "mascara_mc" y en que lugar lo creas?, intenta eliminar la máscara para ver si puedes ver las imágenes:

Código ActionScript :

lienzo.setMask(mascara_mc); //---Elimina esta linea por ahora


Con el ASP no te funcionará sino lo corres desde un servidor, pero primero intenta que te salga con un XML, solo entonces intenta con el ASP.


"mascara_mc" es un clip que enmascara para hacer el deslizamiento del clip cuando tengamos muchas miniaturas y no entren todas a la vez en pantalla, situado en fotograma 1, arriba del todo.
Si quito esta línea de código, y tengo más de 12 imágenes, al pasar de página, se ven cómo pasan, que es lo que se evita con "mascara_mc".

El caso es que esta galería la hice siguiendo un tutorial que encontré por ahí, solo que no recuerdo la web.
Intentaré hacer una labor de investigación, a ver si entre la multitud de notas de webs que tengo apareciera.

De momento sigo escurriendo el coco

Por cristalmon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Ago 2008 06:24 pm
Mira el comentario de @The Fricky! el también estaba pidiendo que postearas la función "crearMiniatura" y lo que me refería con que quitaras la máscara era que probaras tu swf dentro y fuera de flash sin la máscara, aunque no creyera que el error estuviera aquí.

Revisa de todas maneras la configuración de publicación y asegúrate de que la "Local playback security" esté en "Access Local files only".

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 28 Ago 2008 06:27 pm

The Fricky! escribió:

¿Cuál es el código que usas para cargar las imágenes? Lo que veo allí es el código para crear las miniaturas, pero no el que carga las imágenes. Si te carga correctamente en el entorno de Flash pero no cuando lo colocas en el html lo más probable (al menos es lo más común) es que tengas un problema de rutas.


Añado todo el código (todo en fotograma1):

Código ActionScript :

// acciones en fotograma 1
stop();
System.useCodepage = true;
XML.prototype.ignoreWhite = true;
import mx.transitions.Tween;
// separacion-> distancia entre las imágenes
// tanto horizontal como vertical
var separacion:Number = 116;
// 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
//Hasta aquí hemos definido una serie de ajustes iniciales.
var miniaturasXML:XML = new XML();
miniaturasXML.onLoad = mostrarMiniaturas;
miniaturasXML.load("verMiniaturas.xml");
// funcion que se ejecuta al cargar el XML
function mostrarMiniaturas():Void {
// 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/12);
// se crea el clip donde meteremos todas las miniaturas
var lienzo:MovieClip = _root.createEmptyMovieClip("lienzo_miniaturas", _root.getNextHighestDepth());
// lo posiciono donde nos conviene
lienzo._x = 19;
lienzo._y = 100;
// 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 (mi caso)
lienzo.setMask(mascara_mc);
// recorro el array que contiene la lista con los nombres de 
// los archivos de las miniaturas se llama a 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++) { original
for (var k:Number = 0; k < IMG_array.length; 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>2) {
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++;
}
}
//En el bloque anterior hemos definido el objeto XML que va a recibir los datos y también la función encargada de procesarlos. 
function crearMiniatura(columnaF:Number, filaF:Number, ruta:String) {
// bajo_clip es el clip que contendrá el marco de la miniatura
var bajo_clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("bajo_"+filaF+"_"+columnaF, lienzo_miniaturas.getNextHighestDepth());
// clip contendrá la imagen
var clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("foto_"+filaF+"_"+columnaF, lienzo_miniaturas.getNextHighestDepth());
// para cargar la miniatura definimos un objeto MovieClipLoader
// y un objeto detector de eventos
var mi_mcl:MovieClipLoader = new MovieClipLoader();
var miListener:Object = new Object();
mi_mcl.addListener(miListener);
clip.valor = "aaa";
// cargamos la imagen
mi_mcl.loadClip("/minis/"+ruta, clip);
miListener.onLoadStart = function(target_mc:MovieClip) {
// cuando comienza la carga de la imagen
// ponemos al _alpha a 0
target_mc._alpha = 0;
};
miListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
// aquí se podrían poner acciones para mostrar una precarga,
// no oportuno en este caso 
};
// cuando ya se ha completado la carga y tenemos disponible el clip 
miListener.onLoadInit = function(target_mc:MovieClip) {
// recolocamos la imagen (todavía está oculta, con _alpha=0)
target_mc._x = (separacion*columnaF)+(100-target_mc._width)*0.5;
target_mc._y = (separacion*filaF)+(100-target_mc._height)*0.5;
// recolocamos el marco que rodea a la foto
bajo_clip._x = target_mc._x-5;
bajo_clip._y = target_mc._y-5;
// dibujamos el marco
with (bajo_clip) {
beginFill(0xffffff);
lineStyle(1, 0xEEEEEE, 100);
lineTo(target_mc._width+10, 0);
lineTo(target_mc._width+10, target_mc._height+10);
lineTo(0, target_mc._height+10);
lineTo(0, 0);
endFill();
}
// al pinchar sobre el área del marco,
// mostramos la foto grande con la función
// verFotoGrande
bajo_clip.onRelease = function() {
verFotoGrande(ruta);
};
// muestro la miniatura animando el _alpha hasta 100
var myTween:Tween = new Tween(target_mc, "_alpha", mx.transitions.easing.Regular.easeOut, 0, 100, 2, true);
};
}
//Hasta aquí hemos definido la función que crea cada una de las miniaturas.
function verFotoGrande(ruta:String) {
clearInterval(intervaloColor);
// 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 = _root.createEmptyMovieClip("grande_mc", 2*IMG_array.length+11);
// igual con el clip que contendrá el marco
var bajo_grande:MovieClip = _root.createEmptyMovieClip("bajo_grande_mc", 2*IMG_array.length+10);
// posición vertical fija
grande._y = 100;
// para cargar la foto grnade definimos otro objeto MovieClipLoader
// y otro objeto detector de eventos
var grande_mcl:MovieClipLoader = new MovieClipLoader();
var grandeListener:Object = new Object();
grande_mcl.addListener(grandeListener);
// cargo la foto grande
grande_mcl.loadClip("/originales/"+ruta, grande);
grandeListener.onLoadStart = function(target_mc:MovieClip) {
// aplico una transformación de color que deja el clip
// pintado de blanco
myColor = new Color(target_mc);
myColorTransform = new Object();
myColorTransform = {ra:100, rb:255, ga:100, gb:255, ba:100, bb:255, aa:100, ab:0};
myColor.setTransform(myColorTransform);
};
grandeListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
// Igual que antes se pueden poner acciones para mostrar una precarga
};
grandeListener.onLoadInit = function(target_mc:MovieClip) {
// recolocamos la imagen (todavía está oculta)
target_mc._x = 382+Math.round((315-target_mc._width)*0.5);
// recolocamos el marco que rodea a la foto grande
bajo_grande._x = target_mc._x-5;
bajo_grande._y = target_mc._y-5;
// dibujamos el marco
with (bajo_grande) {
beginFill(0xffffff);
lineStyle(1, 0xEEEEEE, 100);
lineTo(target_mc._width+10, 0);
lineTo(target_mc._width+10, target_mc._height+10);
lineTo(0, target_mc._height+10);
lineTo(0, 0);
endFill();
}
// con estas rutinas hacemos la transición de color desde el blanco
var indiceColor:Number = 255;
intervaloColor = setInterval(cambiarColor, 10);
function cambiarColor() {
myColorTransform = {ra:100, rb:indiceColor, ga:100, gb:indiceColor, ba:100, bb:indiceColor, aa:100, ab:0};
myColor.setTransform(myColorTransform);
indiceColor -= 2;
if (indiceColor == -1) {
clearInterval(intervaloColor);
}
}
};
}
//Ya hemos creado la foto grande. Para hacer las transición de la foto grande hemos usado el método setTransform de la clase Color.
// con esta función desplazo el lienzo de las miniaturas para
// pasar de página
function moverLienzo(posY:Number):Void {
var myTween:Tween = new Tween(lienzo_miniaturas, "_y", mx.transitions.easing.Regular.easeOut, lienzo_miniaturas._y, posY, 1, true);
}
// deshabilito de inicio el botón de volver atrás
// ya que se muestra la página 1
pMenos_btn.enabled = false;
pMenos_btn._alpha = 30;


Espero ponerlo más fácil, así. Del mismo modo sigo buscando el origen de la web de donde saqué esto.

Por cristalmon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Ago 2008 06:44 pm
Mientras reviso tu código, no me has respondido lo que te pregunté:


Revisa de todas maneras la configuración de publicación y asegúrate de que la "Local playback security" esté en "Access Local files only".

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 Ago 2008 07:09 am

elchininet escribió:

Mientras reviso tu código, no me has respondido lo que te pregunté:


Revisa de todas maneras la configuración de publicación y asegúrate de que la "Local playback security" esté en "Access Local files only".


Perdona, se me pasó.
Dónde aparece esta opción que me indicas? En "Configuración de publicación" no la veo.
Por favor, dime donde se encuentra para poder averiguar si tengo la "Local playback security" en "Access Local files only"

Gracias

Un saludo

Por cristalmon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ago 2008 09:11 am
Ve a File / Publish Settings / Flash Tab y lo verás, es la última opción de abajo.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 Ago 2008 04:58 pm

elchininet escribió:

Ve a File / Publish Settings / Flash Tab y lo verás, es la última opción de abajo.


Es indiferente seleccionar "Acceder sólo a archivos locales" que "Acceder sólo a la red" el resultado, lamentablemente, sigue siendo el mismo: Desde flash se visualiza bien, pero fuera no.

No sé qué más probar

Por cristalmon

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 29 Ago 2008 08:58 pm
Mira, como te había dicho elimina en publish settings la opción de "Access Network Only" porque así si que no te va a funcionar, ahora también tienes que cambiar dos cosas:

Esto:

Código ActionScript :

mi_mcl.loadClip("/minis/"+ruta, clip);


Por esto:

Código ActionScript :

mi_mcl.loadClip("minis/"+ruta, clip);


Y esto:

Código ActionScript :

grande_mcl.loadClip("/originales/"+ruta, grande);


Por esto:

Código ActionScript :

grande_mcl.loadClip("originales/"+ruta, grande);

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 30 Ago 2008 03:05 pm
Voilá, Solucionado :D

¿Y sólo era eso? Pues, sí, tan sencillo como una maldita "barrita" :twisted:
Vaya pelea me estaba dando.

Una vez más se cumple que la cosa más tonta te lleva de cabeza, en mi caso, tanto revisar el código, se me pasaba una y otra vez desapercibida esta barrita que sobraba.

Muchas gracias!!
Un saludo.

Por cristalmon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Dic 2009 03:10 pm
yo tenia elmismo problema.
mil gracias sois unos cracks

Por didacko

4 de clabLevel



 

firefox

 

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