Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di ercoli
    Registrato dal
    Mar 2002
    Messaggi
    173

    funzioni e scope delle variabili

    Grazie a quanti vorranno rispondermi.

    codice:
    var fileDati = new LoadVars();
    var spaziatore:Number = 0;
    
    fileDati.onLoad = function (ok){
    	if (ok){
    		var limite:Number = Number (fileDati.img)+1;
    		
    		for (foto; foto<limite; foto++) {
    			var clipImg:MovieClip=_root.attachMovie("clip", "pulsante_"+foto, foto);
    			clipImg._x = spaziatore;
    			var empty = clipImg.createEmptyMovieClip("loader", 1);
    			empty.loadMovie(foto+".jpg");
    			var spaziatore:Number = spaziatore+26.5;
    			clipImg.onRelease = function()
                                  {
                                    // IL PROBLEMA E' QUI DENTRO
                                    // LA VARIABILE "FOTO" HA SEMPRE VALORE 1
                                    // E' UN PROBLEMA DI SCOPE?
    		                var pari:Number = foto%=2;
    		                if(pari==0){
    			        lc = new LocalConnection();
    			        lc.send("receiver", "sx", foto+1, foto+2);
    			        lc.close();
    			        delete lc;
    			       }
    		        else {
    			        lc = new LocalConnection();
    			        lc.send("receiver", "sx", foto, foto+1);
    			        lc.close();
    			        delete lc;
    			       }
    }
    		}
    	}
    }
    fileDati.load("menu_d.txt");
    Funziona tutto tranne che in clipImg.onRelease = function() la variabile foto ha sempre e solo valore 1.
    E' un problema di scope? E se così fosse, come posso risolverlo?

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    diciamo di sì, per risolverlo basta passare il valore di "foto" ad ogni clip e poi dall'onRelease richiamarla con this.foto

    codice:
    var fileDati = new LoadVars();
    var spaziatore:Number = 0;
    fileDati.onLoad = function (ok){
    	if (ok){
    		var limite:Number = Number (fileDati.img)+1;
    		for (foto; foto<limite; foto++) {
    			var clipImg:MovieClip=_root.attachMovie("clip", "pulsante_"+foto, foto);
    			clipImg._x = spaziatore;
    			var empty = clipImg.createEmptyMovieClip("loader", 1);
    			empty.loadMovie(foto+".jpg");
    			var spaziatore:Number = spaziatore+26.5;
    			clipImg.foto = foto;
    			clipImg.onRelease = function(){
    		                var pari:Number = foto%=2;
    		                if(pari==0){
    			        lc = new LocalConnection();
    			        lc.send("receiver", "sx", this.foto+1, this.foto+2);
    			        lc.close();
    			        delete lc;
    			       }
    		        else {
    			        lc = new LocalConnection();
    			        lc.send("receiver", "sx", this.foto, this.foto+1);
    			        lc.close();
    			        delete lc;
    			       }
    }
    		}
    	}
    }
    fileDati.load("menu_d.txt");

  3. #3
    Utente di HTML.it L'avatar di ercoli
    Registrato dal
    Mar 2002
    Messaggi
    173
    Grazie!
    Cercherò di approfondire il problema dello scope.

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da ercoli
    Grazie!
    Cercherò di approfondire il problema dello scope.
    diciamo che più che un problema di scope è un "problema" del ciclo, quando entri in un metodo dei MovieClip, come onRelease, il riferimento all'indice ciclato salta, e viene restituito sempre l'ultimo valore del ciclo... in realtà è un comportamento normalissimo, considerato il fatto che il momento in cui si assegna l'onRelease, nel ciclo, non è lo stesso in cui l'utente attiverà il comando, perciò è normale che al momento che si clicca, il codice và a pescare il valore della variabile che a quel punto avrà assunto l'ultimo valore del ciclo

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.