Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    fade in e out invisibili

    Ciao,
    ho tentato di fare una funzione di fadein e out, ma il problema è che vengono effettuati alla velocità della luce e ad occhio nudo nn si vedono, solo col debug si notano...

    Ecco il codice:
    codice:
    this.fadeOut = function() {
    	trace(_root.pannello.photo_mc._alpha+" "+this.fadeSpeed);
    	while (_root.pannello.photo_mc._alpha>this.fadeSpeed) {
    		_root.pannello.photo_mc._alpha -= this.fadeSpeed;
    		trace(_root.pannello.photo_mc._alpha);
    	}
    	_root.pannello.photo_mc._alpha = 0;
    }
    
    this.fadeIn = function() {
    	trace(_root.pannello.photo_mc._alpha+" "+this.fadeSpeed);
    	while (_root.pannello.photo_mc._alpha<100-this.fadeSpeed) {
    		_root.pannello.photo_mc._alpha += this.fadeSpeed;
    		trace(_root.pannello.photo_mc._alpha);
    	}
    	_root.pannello.photo_mc._alpha = 100;
    }
    Come si risolve sto problema?


  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    306
    per forza, tu utilizzi un ciclo while, che il processore esegue con una velocità paurosa...
    prova a fare il tutto con un ciclo onEnterFrame, che esegue il blocco di istruzioni con il framerate del filmato
    che sarebbe:
    this.fadeOut = function() {
    trace(_root.pannello.photo_mc._alpha+" "+this.fadeSpeed);

    this.onEnterFame = function() {//esegui azione in loop
    _root.pannello.photo_mc._alpha -= this.fadeSpeed;
    trace(_root.pannello.photo_mc._alpha);
    if(_root.pannello.photo_mc._alpha<=this.fadeSpeed) {
    delete this.onEnterFrame//cancella il loop
    }
    }
    _root.pannello.photo_mc._alpha = 0;
    }

    this.fadeIn = function() {
    trace(_root.pannello.photo_mc._alpha+" "+this.fadeSpeed);
    this.onEnterFrame = function() {
    _root.pannello.photo_mc._alpha += this.fadeSpeed;
    trace(_root.pannello.photo_mc._alpha);
    if(_root.pannello.photo_mc._alpha>=100-this.fadeSpeed){
    delete this.onEnterFrame
    }
    }
    _root.pannello.photo_mc._alpha = 100;
    }
    spero di averti scritto tutto giusto
    buonuomo.tomma@tiscali.it

  3. #3
    Non è cambiato nulla..

    Il problema è che, facendo il debug, si vede che nn viene mai eseguito questo codice:

    codice:
    	this.onEnterFrame = function() { 
    		_root.pannello.photo_mc._alpha += this.fadeSpeed; 
    		trace(_root.pannello.photo_mc._alpha); 
    		if(_root.pannello.photo_mc._alpha>=100-this.fadeSpeed){ 
    			delete this.onEnterFrame 
    		} 
    	}
    Io avevo pensato di risolvere il prblema mettendo un delay nel ciclo while...

    Sto uscendo pazzo!

  4. #4
    potresti usare questo

    sul frame questa proto

    codice:
    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; 
    } 
    } 
    }; 
    };
    poi per richiamarla asssociandola al frame a un pulsante a quello che vuoi insomma sia per il fade in che per l'out ti basta

    codice:
    mc.alpha("goto",100,0 ,1);//OUT
    mc.alpha("goto",0,100 ,1);//IN
    Consulenza aziendale a 360° http://www.gruppodg.it http://www.gruppodg.it/3d
    Realizzazione siti internet, Siti Flash, Ricerca Location per bar negozi , esercizi commerciali, sviluppo pratiche e allestimento

  5. #5
    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);
    }

  6. #6
    Dimenticavo.. grazie mille per l'aiuto che mi avete dato finora!

  7. #7
    non lo fa perchè hai messo 100,0 per il fade in ma non hai assegnato lo 0,100 per il fade out

    codice:
    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);
    }
    in questo modo i 2 pulsanti fanno entrambi il fade in
    Consulenza aziendale a 360° http://www.gruppodg.it http://www.gruppodg.it/3d
    Realizzazione siti internet, Siti Flash, Ricerca Location per bar negozi , esercizi commerciali, sviluppo pratiche e allestimento

  8. #8
    Così i pulsanti fanno entrambi il fade out, poi, nella funzione onLoadInit, dopo il resize e il posizionamento dell'immagine, faccio il fade in.

    Il fade in l'ho messo al posto giusto, infatti funziona, è il fade out che non va...

  9. #9
    Originariamente inviato da superpelo
    Così i pulsanti fanno entrambi il fade out, poi, nella funzione onLoadInit, dopo il resize e il posizionamento dell'immagine, faccio il fade in.

    Il fade in l'ho messo al posto giusto, infatti funziona, è il fade out che non va...
    si giusto

    ma fammi capire una cosa tu l'immagine la carichi poi clikki vuoi che esca in fade in e appaia l'altra in fade out

    giusto è così fammi sapere perchè il modo di gestire la cosa è concettualmente sbagliato almeno fatto così. Dovresti usare 2 clip differenti in cui dare una volta caricate le img ad uno il fade in e all'altro l'out.

    se ho capito quello che vuoi fare dimmi che ti scrivo 2 righe per ottenere l'effetto che desideri in di una e out dell'altra

    Consulenza aziendale a 360° http://www.gruppodg.it http://www.gruppodg.it/3d
    Realizzazione siti internet, Siti Flash, Ricerca Location per bar negozi , esercizi commerciali, sviluppo pratiche e allestimento

  10. #10
    Io voglio che al click del bottone quella visualizzata vada in fade out e quella "entrante" vada in fade in.

    Praticamente io ho pensato di fare una cosa del genere in risposta alla pressione del bottone:
    1. prendo il riferimento al mc che contiene l'immagine visualizzata e applico un fade out;
    2. al riferimento del mc associo un nuovo MovieClip ottenuto con createEmptyMovieClip()
    3. carico nel movie clip appena ottenuto una nuova immagine; appena ho finito il caricamento, onLoadInit(), la ridimensiono e applico il fade in;

    Ogni volta ricreo un nuovo pannello xkè è l'unica soluzione che sono riuscito a trovare per risolvere il problema del ridimensionamento dell'immagine..


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.