Ciao, ho provato la seconda soluzione che mi avete proprosto.. il fade in funziona alla perfezione, ma il fade out non lo fa proprio.
In più, quando lo provo, mi carica solo una delle due immagini che ho impostato nel codice. Se faccio il debug alcune volte me le carica entrambe. Vi assicuro che le immagini ci sono, la vecchia versione del filmato le carica senza problemi!
Facendo il debug ho visto che sul fade out proprio nn si sogna di eseguire l'onEnterFrame della funzione alpha.
Vi allego tutto il codice, io sono al mio primo esperimento di flash e magari non vedo un qlke errore semantico grosso come una casa:
codice:
/**/
//Variabili per debug
var img = "galleria_2.jpg,http://localhost/compagniainstabile/public/img/att1.jpg";
//Dimensioni massime delle foto
var max_w = 300;
var max_h = 201;
var array_immagini:Array = img.split(",");
var i = 0;
var loader:MovieClipLoader = new MovieClipLoader();
var loadListener:Object = new Object();
var photo_mc:MovieClip;
loadListener.onLoadInit = function(loadTarget) {
loadTarget._alpha = 0;
var cw = loadTarget._width;
var ch = loadTarget._height;
trace(array_immagini[i]+" begin("+max_w+","+max_h+"): "+cw+","+ch);
if ((cw > max_w) || (ch > max_h)) {
var xratio = max_w / cw;
var yratio = max_h / ch;
var ratio = yratio;
if (xratio < yratio) {
ratio = xratio;
}
cw = Math.round(cw * ratio);
ch = Math.round(ch * ratio);
trace("end: "+cw+","+ch);
loadTarget._width = cw;
loadTarget._height = ch;
}
loadTarget._x = Math.round((max_w - cw)/2);
loadTarget._y = Math.round((max_h - ch)/2);
loadTarget.alpha("goto",0,100 ,1); //Fade in
}
loader.addListener(loadListener);
MovieClip.prototype.alpha = function(aarrivo, a, b, t) {
///////////
if ((aarrivo != "goto")&&(a != '' && a != "" && a != 0)&&(b != '' && b != "" && b != 0)) {this.k = (1/b)/a;}
else {
if ((aarrivo != "goto")&&(a != '' && a != "" && a != 0)&&(b == '' || b == "" || b == 0)) {this.k = 1/a;}
else {this.k = 0.1;}
}
if (aarrivo == "goto") {this._alpha = a;this.aarrivo = b;}
else {this.aarrivo = aarrivo;}
///////////
this.da = 0;
this._visible=true;
this.t = t;
this.t1 = getTimer()/100;
this.onEnterFrame = function() {
this.t2 = getTimer()/100;
if ((this.t2 >= this.t1 + this.t) || (this.t == '' || this.t == "" || this.t == 0)) {
this.da = (this.aarrivo-this._alpha)*this.k;
if (Math.abs(this.da)>0.1) {
this._alpha += this.da;
} else {
this._alpha = this.aarrivo;
if (this._alpha == 0) {this._visible=false;}
delete this.onEnterFrame;
}
}
};
};
buttonNext.onRelease = function(){
i = (i+1)%array_immagini.length;
photo_mc.alpha("goto",100,0 ,1); //Fade out
photo_mc = _root.pannello.createEmptyMovieClip("photo_mc",1);
loader.loadClip(array_immagini[i],photo_mc);
}
buttonPrev.onRelease = function(){
i--;
if (i<0){
i = array_immagini.length-1;
}
photo_mc.alpha("goto",100,0 ,1); //Fade out
photo_mc = _root.pannello.createEmptyMovieClip("photo_mc",1);
loader.loadClip(array_immagini[i],photo_mc);
}
this.onLoad = function(){
photo_mc = _root.pannello.createEmptyMovieClip("photo_mc",1);
loader.loadClip(array_immagini[i],photo_mc);
}