Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: AS2 gestione preload

  1. #1

    AS2 gestione preload

    Ho realizzato una classe per gestire il preload di filmati utilizzando il movieClipLoader. Il metodo costruttore mi inizializza le variabii con il nome del filmato da caricare, un metodo inizia il caricamento, e un'altro metodo esegue il controllo dei bytes caricati, del caricamento completo, ed altri controlli. In questo metodo ho utilizzato i listener, fin quì nessun problema, ma dal listener onLoadInit cerco di accedere ad un metodo della classe per far eseguire altre operazioni e non me lo vede, cioè non esegue nessuna operazione, l'unico modo per eseguire il contenuto di quel metodo è quello di impostare una variabile dentro al metodo che contiene i lister con il nome del metodo che devo richiamare da dentro i listener. C'è un modo migliore per farlo? non riesco propio ad accedere a nessun metodo al di fuori dei listener

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Il codice che hai usato?

  3. #3
    Ti ho postato la classe, io vorrei evitare di mettere il codice che vedi nel metodo setMyProgress pechè nella classe che crea il testo(non ho postato) mi da dei problemi nel richiamare altri metodi
    codice:
    class preload{
    	
    	private var totBytes:Number;
    	private var lodBytes:Number;
    	private var targetClip:MovieClip;
    	private var urlClip:String;
    	private var newMovieClip:MovieClipLoader;
    	private var clipX:Number;
    	private var clipY:Number;
    	private var clipW:Number;
    	private var clipH:Number;
    	private var newText:createText;
    	
    	public function preload(inTarget,inClip){
    		this.targetClip=inTarget;
    		this.urlClip=inClip;
    	}
    	
    	public function startPreload():Void{
    		newMovieClip=new MovieClipLoader();
    		newMovieClip.loadClip(urlClip,targetClip);
    		setMyProgress();
    
    	}
    
    	private function setMyProgress(){
    		var extFunction:Function=myTxt;
    		var myListener:Object=new Object();
    		myListener.onLoadStart=function(myTarget){
    			var progresso=newMovieClip.getProgress(myTarget);
    			extFunction("Inizio download");
    		}
    		myListener.onLoadProgress=function(myTarget,bytesLoaded,bytesTotal){
    			extFunction("pp");
    		}
    		myListener.onLoadComplete=function(myTarget){
    			extFunction("Download Completo");
    		}
    		myListener.onLoadInit=function(myTarget){
    				extFunction("Caricamento completato");
    				/* se scrivo
    				myTxt("Caericamento completo");
    				non funziona, quel metodo crea il campo di testo con il valore che gli passo
    				*/
    		}
    		try{
    			myListener.onLoadError=function(myTarget,errCode){
    				throw new Error(errCode);
    			}
    		}
    		catch(e){
    			trace(e);
    		}
    		newMovieClip.addListener(myListener);
    	}
    	
    	private function myTxt(inValue):Void{
    		newText=new createText();
    		newText.setnewDati(targetClip._x,targetClip._y,120,40,"pippo",'');
    		newText.createMyText(inValue);
    	}
    }

  4. #4
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Prova così:

    codice:
    	private function setMyProgress(){
    		var path:Preloader = this;
    		var myListener:Object=new Object();
    		myListener.onLoadStart=function(myTarget){
    			var progresso = path.newMovieClip.getProgress(myTarget);
    			path.extFunction("Inizio download");
    		}
    		myListener.onLoadProgress=function(myTarget,bytesLoaded,bytesTotal){
    			path.extFunction("pp");
    		}
    		myListener.onLoadComplete=function(myTarget){
    			path.extFunction("Download Completo");
    		}
    		myListener.onLoadInit=function(myTarget){
    				path.extFunction("Caricamento completato");
    				/* se scrivo
    				myTxt("Caericamento completo");
    				non funziona, quel metodo crea il campo di testo con il valore che gli passo
    				*/
    		}
    		try{
    			myListener.onLoadError=function(myTarget,errCode){
    				throw new Error(errCode);
    			}
    		}
    		catch(e){
    			trace(e);
    		}
    		newMovieClip.addListener(myListener);
    	}

  5. #5
    Grazie, si il tuo metodo funziona, ho dovuto correggere una cosa, la sintassi è path.nome_metodo_classe(), ora faccio le prove che mi servono.

  6. #6
    Originariamente inviato da negatyve
    Prova così:

    codice:
    ...
    try{
    	myListener.onLoadError=function(myTarget,errCode){
    		throw new Error(errCode);
    	}
    }
    catch(e){
    	trace(e);
    }
    ...
    scusami negatyve ma onLoadError , essendo un evento asincrono e piu' che lecito come evento o funzione di un oggetto qualunque quale e' un listener, perche' dovrebbe generare un' eccezione ?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    up ... la mia non era una provocazione, era solo una normale domanda ... non sapevo che try e catch fossero validi anche per eventi asincroni e non capisco come possano esserlo ... quindi vorrei, se possibile, maggiori delucidazioni
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    Io ho letto in un manuale il loro utilizzo, non come li ho utilizzati io nei listener, ma nella normale programmazione, li ho messi come vedi, e genera eccezzioni. Non so per quale motivo funziona anche su eventi asincroni, ma funziona. Per questo dovrebbe risponderti nega

  9. #9
    aspe' ... cerchiamo di capirci ...

    onLoadError e' gia' un evento gestito dal MovieClipLoader ... quello che voglio dire e' che

    try {
    oggetto.onLoadError = function() { trace('ciao'); }
    }
    catch(e) {
    // questo non avverrà mai ...
    }


    mentre mi sembra strano, ma possibile a livello di eccezione scaturita, che l' evento onLoadError, una volta caricato generi il throw e questo venga ammesso ...


    nel senso, un evento asincrono non sai quando verra' chiamato .... quindi tutto il codice del try potrebbe gia' essere stato esguito e lo script potrebbe gia' essere andato oltre ... a quel punto il catch a cosa ti serve ???

    a gestire un errore di caricamento ???

    e perche' se hai gia' l' eveno dedicato onLoadError che e' fatto apposta per fare questo ?


    insomma non capisco come e dove usi quella sintassi ne capisco bene perche' , di qui non capisco perche' possa tornare utile un throw su un evento asincrono ...


    codice:
    // dichiaro l' oggetto ...
    var fakeError:Object = new Object();
    
    // qui faccio una cosa inutile
    try{
    
    	// perche' sara' sempre possibile creare questa funzione
    	// dentro un oggetto ...
    	fakeError.onLoadError = function(myTarget, errCode){
    		throw new Error(errCode);
    	}
    }
    // infatti questo catch non verrà mai eseguito
    catch(e){
    	trace('marcondiro dirondello');
    }
    
    // funzione "asincrona"
    fakeError.onLoadError(this, 'a cosa servo ??? ');
    L' unica cosa che vedi nell' output e' la scritta 'a cosa servo ??? ' ma solo ed esclusivamente perche' generi un errore non gestito e non perche' vai a finire sul catch sotto ... piu' chiara ora la mia domanda ?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #10
    Io ho capito quello che vuoi dire tu, il tuo esempio è giusto, ma quello che ho fatto io è leggermente diverso. L'eventyo onLoadError genera un'eccezzione throw che viene catturata da catch, se si verifica un errore stampa il codice di errore riscontrato.

    Non so dirti con precisione perchè funziona su eventi asincroni perchè purtroppo non ho le tue conoscenze, ma studiando sui manuali a me è sembrato logico utilizzare il try per generare un eccezzione in quel modo, con onLoadError.

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.