Comunidad de diseño web y desarrollo en internet online

Carga directa de imagen

Citar            
MensajeEscrito el 29 Dic 2008 08:40 pm
Hola de nuevo, sigo con la galería de mi anterior post, ahora tengo un problemilla sencillo (eso creo al menos) ...

A ver, concretando, dentro del code, en la funcion de verFotoGrande, lo que realiza esta función es que al clickar en cada miniatura, se vea su foto en grande, pues bien, lo que ocurre, es que hasta que no clikeas en la miniatura no se ve ninguna foto, y yo quiero que nada más entrar, ya se vea la primera foto.

La función es ésta:

Código :

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 = 180;
   grande._x = 380;
   // para cargar la foto grande 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("galeria/retratos/bigs/"+ruta,grande);
   grandeListener.onLoadStart = function(target_mc:MovieClip) {


La función sigue, pero creo que es aquí dónde se debe incluir lo que se necesite para ello. O se debe incluir después del onLoadInit ??

Bien, ya probé, a poner un loadmovie nada más empezar el code con la foto q quiero q se vea, me ha funcionado, pero luego no se sustituye por las siguientes, se queda ahí vista, además no se ve con el efecto que las otras....

Alguién podría echarme una mano... sé que tiene q ser algo sencillo, pero no consigo dar con ello....

Toda orientación es de agradecer....

Gracias.

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Dic 2008 08:55 pm
Imaginando que tu primera miniatura se llama "mini_01". Al final de tu primer fotograma colocas:

Código ActionScript :

mini_01.onRelease();

Claro, estoy asumiendo que programaste el onRelease de cada miniatura para que ejecute la función.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

chrome
Citar            
MensajeEscrito el 29 Dic 2008 09:07 pm
No, las miniaturas son cargadas tb externamente... en el .fla no tengo nada, sólo el code. Te pongo el code antes de la función anteriormente dicha.

Code:

Código :

   //para no tener problemas con las tildes y otros caracteres especiales.
System.useCodepage = true;
//no interprete los saltos de línea de todos los futuros documentos XML como nodos vacíos
XML.prototype.ignoreWhite = true;
//importamos la clase Tween
import mx.transitions.Tween;
// separacion-> distancia entre las imágenes
// tanto horizontal como vertical
var separacion:Number = 80;
// 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 = new XML();
miniaturasXML.onLoad = mostrarMiniaturas;
miniaturasXML.load("galeria/retratos/minis/miniaturas.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);
   // creo el clip donde meteremos todas las miniaturas
   var lienzo:MovieClip = createEmptyMovieClip("lienzo_miniaturas", getNextHighestDepth());
   // lo posiciono donde nos conviene
   lienzo._x = 20;
   lienzo._y = 150;
      // 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>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++;
   }
}
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("galeria/retratos/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í 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
   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 -- Si elimino este dibujo, me deja de funcionar la zona activa de las minis, asi que lo dibujo de negro para que no se vea
      with (bajo_clip) {
         beginFill(0x000000);
         lineStyle(1,0x000000,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);
   };
}

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Dic 2008 06:32 am
Si las cargas externamentes o no es irrelevante ¿Cómo haces que, al hacer clic en una miniatura. cargue la imagen correspondiente?

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

chrome
Citar            
MensajeEscrito el 30 Dic 2008 09:45 am
Lo he hecho siguiendo este tutorial: http://www.tutoriales-flash.com/tutorial.asp?id_tuto=29

De todas formas, en este otro post, http://www.cristalab.com/foros/t66320_gran-problema-galeria.-urgente-por-favor.html , tengo otro gran problema con este code que tiene algo q ver con este problema...

La verdad para ser un tuto.... cuántos problemas da.....

Pero respondiendo más concretamente a tu pregunta, es en esta parte del code dónde se hace que al hacer clik en la miniatura se cargue la grande, con un detector de eventos:

Código :

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("galeria/retratos/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;
   };


Te agradezco en todo lo que puedas ayudarme, pues estoy my perdida, y tengo q entregar la web ya :(

Por Hapki

Claber

268 de clabLevel



 

firefox

 

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