Google Web after-hours

Contador en flash JSFL Traductor

* prototipo load_with_fade
* carga JPG o SWF con transición desde _alpha 0 a 100
* la imagen no inicia ta transición hasta no estar completamente cargada
* @param ruta (ruta/arhivo)

MovieClip.prototype.CargarImg = function(ruta) {
	var obj = this;
	var mi_level = this._parent.getNextHighestDepth();
	obj.loadMovie(ruta);
	obj.onEnterFrame = function() {
		if (obj.getBytesLoaded() == obj.getBytesTotal()) {
			delete obj.onEnterFrame;
		}
		this._parent.createEmptyMovieClip("loop", mi_level);
		obj._alpha = 0;
		this._parent.loop.onEnterFrame = function() {
			obj._alpha += 1;
			if (obj._alpha>=100) {
				delete this._parent.loop.onEnterFrame;
			}
		};
	};
};

// – ejemplo de uso

this.createEmptyMovieClip("cargador", this.getNextHighestDepth());
this.cargador._x = 100;
this.cargador._y = 100;
this.cargador.CargarImg("img01.jpg");

9 Responses to 'prototype load_with_fade'

  1. AnGeL Says:

    Hola, esta muy bueno este codigo, solo queria hacerte una pequeña observacion, en la linea:
    if (obj.getBytesLoaded() == obj.getBytesTotal())
    veo que estas comprobando si la imagen ya termino de cargarse, pero hay veces que suele suceder que esta comprobacion da como verdadera y la imagen aun no se cargo; esto ocurre cuando todavia no se pudo tomar el valor del peso de la imagen, osea que todavia no se empezo a cargar; por lo que el peso total seria 0 y el peso cargado seria 0 tambien por lo cual la comprobacion: peso_total == peso_cargado te daria como verdadera y en realidad no seria asi.
    Para solucionar esto habria que agregarle al condicionar otra condicion mas, de esta manera:
    if (obj.getBytesLoaded() == obj.getBytesTotal() && obj.getBytesLoaded() > 10) .
    De esta manera comprobamos que se haya cargado todo y que ademas se haya emepzado a cargar ;).

    Bueno espero que sea un aporte significativo a la causa :D.

    Un saludo para todos

  2. ivan Says:

    creo que de este modo sirve igual y queda un poco más sintetico:

    MovieClip.prototype.loadImg = function(path, vel) {
    this.createEmptyMovieClip("content", this.getDepth());
    this.obj = this.content;
    this.obj.loadMovie(path);
    this.obj._alpha = 0;
    this.onEnterFrame = function() {
    if (this.obj.getBytesLoaded() == this.obj.getBytesTotal() && this.obj._width>0) {
    this.obj._alpha += vel;
    if (this.obj._alpha>=100) {
    delete this.onEnterFrame;
    }
    }
    };
    };
    //USO
    this.createEmptyMovieClip("myMc", 1);
    myMc.loadImg("imagen.jpg", 10);

  3. AnGeL Says:

    Bueno en este caso en donde estas tomando el peso de una imagen directamente si, pero si la precarga la queres hacer basandote en el MC que contiene la foto, acordate que un MC vacio tiene un peso de 4bytes, es por eso del valor 10. Pero como decis vos, en este caso andaria tranquilamente con el 0.

    Salu2

  4. ivan Says:

    con respecto al peso del MC vacio y demás, nunca tuve problemas,
    de todos modo si así fuese, en el caso del último script no influye ya que el MC se crea de nuevo cada vez que se carga una imagen,
    pero además del peso cargado y peso total de la imagen para asegurarse de que este cargada verifica que _width > 0;

    this.obj.getBytesLoaded() == this.obj.getBytesTotal() && this.obj._width>0

    saludos!

  5. tonilopez Says:

    La verdad, este proto, no me quedó nada bien, pero bueno está si sirve para crear debate, por cierto, Ivan utiliza la propiedad width para comprobar que la imagen se empezó a cargar.

    La verdad es que no os quito razón, pero nunca me vi en la necesidad de hacer esa comprobación.

    Saludos.

  6. verdefeliz Says:

    Pues sí , este tema de un alpha fade salí ó hace poco en el foro AS1, y yo andaba preocupado precisamente por este asunto. La comprobación que comentaba AnGeL se hace necesaria cuando trabajamos online.

  7. Ricardo Diaz Says:

    Alguien tiene una idea de como hacer esto desde una clase en AS2?

  8. Christian Lopez Says:

    Hola… alguien puede decirme porque sera que este codigo no funciona para cargar mas de una imagen…. como es que deberí a de hacerlo…?

    He intentado ingresandolo de esta forma :

    _root.createEmptyMovieClip("foto1″, this.getNextHighestDepth());
    _root.foto1._x = 75;
    _root.foto1._y = 50;
    _root.foto1.CargarImg(pic1+".jpg");

    _root.createEmptyMovieClip("foto2″, this.getNextHighestDepth());
    _root.foto2._x = 75;
    _root.foto2._y = 120;
    _root.foto2.CargarImg(pic2+".jpg");

    Y me carga una u otra imagen. Que estoy haciendo incorrecto y que es lo que debo de hacer para que me funcione con 5 imagenes.

    Gracias.

  9. Jr_X Says:

    Habrá alguna manera de cargar varias imágenes con un setInterval, por que a mi no me sale…. se pierde el fader cuando lo pongo en un setInterval, Ayuda por favor