* 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");
Julio 21st, 2004 at 8:38 pm
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
.
Un saludo para todos
Julio 22nd, 2004 at 6:11 pm
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);
Julio 22nd, 2004 at 8:48 pm
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
Julio 22nd, 2004 at 9:26 pm
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!
Julio 22nd, 2004 at 9:43 pm
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.
Julio 23rd, 2004 at 10:57 am
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.
Septiembre 1st, 2004 at 6:52 pm
Alguien tiene una idea de como hacer esto desde una clase en AS2?
Septiembre 22nd, 2004 at 5:44 am
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.
Enero 10th, 2005 at 8:19 pm
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