Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Slide show di jpg

  1. #1

    Slide show di jpg

    Ciao a tutti,
    ho un problema con un'animazione che fa uno slide show di immagini jpg.

    Premendo sui due bottoni (buttonNext e buttonPrev) è possibile scorrere in avanti o indietro la lista delle immagini.

    Il problema che mi si presenta è che, al caricamento, la prima immagine non viene correttamente ridimensionata mentre successivamente scorrendo tale lista con gli appositi bottoni tutte le immagini vengono mostrate con le giuste dimensioni.

    Vi allego il codice:

    codice:
    var array_immagini = new Array("01.jpg","galleria.jpg","god.jpg");
    var i = 0;
    var max_w = 300;
    var max_h = 200;
    
    buttonNext.onRelease = function(){
    	i = (i+1)%array_immagini.length;
    	loadMovie(array_immagini[i],_root.pannello);
    	var cw = _root.pannello._width;
    	var ch = _root.pannello._width;
    	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 = cw * ratio;
            ch = ch * ratio;
            _root.pannello._width = cw;
            _root.pannello._height = ch;
    	}
    }
    
    buttonPrev.onRelease = function(){
    	i--;
    	if (i<0){
    		i = array_immagini.length-1;
    	}
    	loadMovie(array_immagini[i],_root.pannello);
    	var cw = _root.pannello._width;
    	var ch = _root.pannello._width;
    	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 = cw * ratio;
            ch = ch * ratio;
            _root.pannello._width = cw;
            _root.pannello._height = ch;
    	}


    Ciao e grazie!

  2. #2
    Ok, ho cercato e ho scoperto che devo fare il preload.. ma come posso applicarlo facilmente al mio codice?

    Abbiate pietà, è il mio primo approccio a flash...


  3. #3

    preload

    Ho scoperto che bisogna fare il preload delle immagini.. ci ho provato, ho modificato il codice di risposta del bottone così:

    codice:
    buttonNext.onRelease = function(){
    	i = (i+1)%array_immagini.length;
    	var loader:MovieClipLoader = new MovieClipLoader();
    	var loadListener:Object = new Object();
    	
    	loadListener.onLoadStart = function() {
    		_root.pannello._visible = false;
    	}
    	loadListener.onLoadComplete = function() {
    		var cw = _root.pannello._width;
    		var ch = _root.pannello._width;
    		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 = cw * ratio;
            	ch = ch * ratio;
            	_root.pannello._width = cw;
            	_root.pannello._height = ch;
    		}
    		_root.pannello._visible = true;
    	}
    	
    	loader.addListener(loadListener);
    	loader.loadClip(array_immagini[i],_root.pannello);
    }
    Ma ora il problema è peggiorato, non effettua il resize neanche sulle immagini già in cache.

    Sto uscendo pazzo!

    Almeno uno ke ha pietà...

  4. #4

    SOLUZIONE

    Finalmente sono arrivato ad una soluzione, ora ve la posto:

    codice:
    var array_immagini = new Array("01.jpg","galleria.jpg","god.jpg");
    var i = 0;
    var max_w = 300;
    var max_h = 200;
    var loader:MovieClipLoader = new MovieClipLoader();
    var loadListener:Object = new Object();
    	
    loadListener.onLoadInit = function(loadTarget) {
    	var cw = loadTarget._width;
    	var ch = loadTarget._width;
    	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 = cw * ratio;
           	ch = ch * ratio;
           	loadTarget._width = cw;
           	loadTarget._height = ch;
    	}
    }
    
    buttonNext.onRelease = function(){
    	i = (i+1)%array_immagini.length;
    	loader.addListener(loadListener);
    	loader.loadClip(array_immagini[i],_root.pannello);
    }
    
    buttonPrev.onRelease = function(){
    	i--;
    	if (i<0){
    		i = array_immagini.length-1;
    	}
    	loader.addListener(loadListener);
    	loader.loadClip(array_immagini[i],_root.pannello)
    }

  5. #5
    Utente bannato
    Registrato dal
    May 2005
    Messaggi
    26
    ciao, ho il tuo stesso problema ... mi puoi spiegare meglio i passaggi ???

    Grazie !


  6. #6
    In realtà la versione funzionante è questa:

    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();
    
    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 = 100;
    }
    
    loader.addListener(loadListener);
    
    buttonNext.onRelease = function(){
    	i = (i+1)%array_immagini.length;
    	var 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;
    	}
    	var photo_mc = _root.pannello.createEmptyMovieClip("photo_mc",1);
    	loader.loadClip(array_immagini[i],photo_mc);
    }
    
    this.onLoad = function(){
    	var photo_mc = _root.pannello.createEmptyMovieClip("photo_mc",1);
    	loader.loadClip(array_immagini[i],photo_mc);
    }
    Sostanzialmente ad ogni caricamento di nuova immagine vado a creare un nuovo movie clip che ridimensiono a dovere.


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.