Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 13 su 13
  1. #11
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    E' qui che ti viene incontro l'estensione delle classi. Se estendi la classe di cui parli come sottoclasse di EventDispatcher, potrai attivare un evento legato a quella classe, in qualsiasi altro posto ti serva. Mettiamo questo esempio:

    Codice PHP:
    package {
        
    import flash.events.Event;
        
    import flash.events.EventDispatcher;
        
    import flash.net.URLLoader;
        
    import flash.net.URLRequest;
        public class 
    Controlli extends EventDispatcher {
            private var 
    _risultato:XML;
            public function 
    Controlli (xml:String) {
                var 
    loader:URLLoader = new URLLoader(new URLRequest(xml));
                
    loader.addEventListener(Event.COMPLETE__complete__);
            }
            private function 
    __complete__ (e:Event) {
                
    dispatchEvent(e);
                
    risultato = new XML(e.target.data);
            }
            public function 
    get risultato ():XML {
                return 
    _risultato;
            }
        }

    Abbiamo creato la classe Controlli in maniera tale da caricarci un file xml che contenga le variabili di configurazione che ci servono e abbiamo usato dispatchEvent per creare un evento riferito alla classe Controlli, che possiamo poi sfruttare dentro "main" per usare i dati ricevuti dall'xml e incanalati sempre dentro Controlli nella proprietà "risultato".

    Codice PHP:
    package {
        
    import flash.display.Sprite;
        public class 
    main extends Sprite {
            public var 
    controlli:Controlli;
            public function 
    main () {
                
    controlli = new Controlli("conf.xml");
                
    controlli.addEventListener(Event.COMPLETEcompleteHandler);
            }
            public function 
    completeHandler (event:Event) {
                
    trace(event.target.risultato);
            }
        }

    Prendi le classi scritte solo come esempio, perchè non effettuano il controllo degli errori in caso di mancato caricamento o se i dati dall'esterno non vengono riconosciuti come XML.

  2. #12
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    14
    si, se ricordi mi avevi già prospettato questa soluzione e in effetti è stata quella che ho utilizzato nel mio caso, però come fai nel caso in cui un metodo di una classe deve lavorare contemporaneamente con il tuo "risultato" caricato da "Controlli" e magari con altre variabili caricate da altre classi rese disponibili sempre alla fine di un particolare evento? come fai a maneggiarle nella stessa funzione?

    Poi considera che non è detto che i valori che ti servono siano generati da eventi che accadono sequenzialmente, magari io vorrei poter caricare il file di properties nello startup della applicazione e poi avere a disposizione i valori quando l'utente va su una particolare opzione di un menu a tendina, in quel caso l'evento caricamento che è stato mezz'ora prima è sempre afferrabile?

    Insomma, io sono un vecchio sviluppatore Java, ripeto, ammetto che potenzialmente as3 basato su eventi è superiore, ma utilizzandolo si ha l'impressione di programmare su una architettura totalmente legata alla timeline piuttosto che su una vera architettura OO.

    Tutto questo naturalmente IMHO

    grazie
    Adolfo

  3. #13
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Immagino che sia una questione di prospettive differenti. Comunque almeno per quel che dici i modi ci sono e tra l'altro sono quelli che utilizzo abitualmente. Considera che AS è un linguaggio a thread singolo perciò quando si sviluppa bisogna considerare di seguire una determinata logica programmatica per raggiungere lo scopo di un progetto, considera che una volta che il file con i controlli è caricato, non ci devi più pensare e passi al blocco successivo consapevole del fatto che ad evento avvenuto potrai utilizzare in ogni momento le variabili messe a disposizione da quella classe.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.