Visualizzazione dei risultati da 1 a 3 su 3

Discussione: as file & eventi

  1. #1
    Utente di HTML.it L'avatar di Vinniec
    Registrato dal
    Apr 2002
    Messaggi
    195

    as file & eventi

    Ciao a tutti,
    Sto utilizzando file actionscript esterni perchè ho la necessità di classi personalizzate nel mio progetto.
    Una di queste classi accede ad un server scambiandosi informazioni tramite xml. Fin qui tutto ok. Il problema sorge perché la richiesta xml al server è asincrona e se non uso gli eventi sticazzi che posso utilizzare le proprietà della classe dal file swf principale.
    La domanda è: è possibile creare eventi personalizzati alle proprie classi? (sono abituato troppo bene con vb..!)
    Insomma ho la necessità di creare un evento in un file as gestibile però dal file swf che crea la classe.
    Qualcosa che stia nel file swf principale che richiama la classe, tipo:

    import miaclasse;
    var oggetto:miaclasse=new miaclasse();
    miaclasse.onInitialize=function({trace("classe inizializzata")});

    Quindi come creo una funzione tipo onInitialize nel file as dove dichiaro la classe miaclasse?
    Nelle guide non ho trovato una mazza. Possibile che non sia concessa la gestione degli eventi personalizzati?
    Grazie e ciao
    __________________
    non darmi consigli se non te li chiedo!
    .: DUCATI FOR LIFE :.
    *Vinniec*
    __________________

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Certo. Nella classe:

    codice:
    import mx.events.EventDispatcher
    
    class MiaClasse
    {
    	static var evtDispatcher:Function = EventDispatcher;
    	public var addEventListener:Function;
    	public var removeEventListener:Function;
    	private var dispatchEvent:Function;
    
    	// constructor
    	function MiaClasse()
    	{
    		EventDispatcher.initialize(this);
    	}
    	
    	function metodoDellaClasse()
    	{
    		// dispaccia un evento
    		dispatchEvent({type:"nomeEvento", variabile:valore});
    	}
    }
    e per iscrivere un ascoltatore dell'evento:
    codice:
    var oggetto:MiaClasse = new MiaClasse();
    var listener = new Object();
    listener.nomeEvento = function(evt:Object)
    {
    	// fai qualcosa
    }
    oggetto.addEventListener("nomeEvento", listener);

  3. #3
    Utente di HTML.it L'avatar di Vinniec
    Registrato dal
    Apr 2002
    Messaggi
    195
    grazie e bravo!
    ho un dizionario di action script 2.0 discreto ma di queste classi non ne parla granché. Mi sa che devo scandagliare le biblioteche on-line e comprarne uno nuovo. Ora, sapresti anche aiutarmi a comprendere perchè le variabili private della mia classe non vengono assolutamente aggiornate? Cioè dopo l'evento XML di avvenuta risposta, devo notificare (grazie a te lo farò diversamente) che le proprietà della classe sono aggiornate ai dati ricevuti con xml. Strano ma vero, queste proprietà non vengo aggiornate. Quindi se richiedo la proprietà (rilasciata tramite funzione get) questa non restituisce la proprietà "aggiornata" al nuovo valore.
    Oltre questo casino del quale posterò il codice, ho notato che per far funzionare le variabili xml private globali di classe, ho dovuto dichiarare la classe come dynamic ed utilizzare this al posto della var. xml per accedere ai nodi una volta ricevuto l'xml dal server con i dati..
    Mi spiego meglio:

    dynamic class album{
    private var xmlresponse:XML; //variabili xml incriminate!
    private var servicerequested:XML;
    private var service_Reply:Boolean;
    function album()
    {//costruttore
    //provavo ad analizzare con un timer questa proprietà
    //prima dell'intervento di NEGATIVE
    this.service_Reply=false;
    }

    public function service_getAlbumImgs()
    {
    var loadlistener:Object = new Object();
    var str:String = new String();
    str = "la stringa xml da inviare";
    var xmldata=new XML(str);
    try {
    var thisObj:album = this;
    xmlresponse=new XML();
    xmlresponse.onLoad = function(success:Boolean)
    {
    if (success)
    {
    servicerequested=new XML();
    servicerequested = xmlresponse.childNodes[0].firstChild;//così non funziona
    servicerequested = this.childNodes[0].firstChild;//così funziona

    var chs:XML = new XML();
    chs = xmlresponse.childNodes[0].childNodes;//vale anche per questa riga..
    var ch:XMLNode = new XMLNode();
    ch = chs[0].childNodes;
    //estrai le info ed ora aggiorna la proprietà
    this.service_Reply=true;
    }
    }
    xmldata.sendAndLoad("indirizzo",xmlresponse);

    public function get serviceReply():Boolean
    {
    return this.service_Reply; //restituisce sempre false
    }


    Ok, ho eliminato qualcosa quà e la pertanto ti prego di concentrarti solo sul perché la proprietà non viene restituita aggiornata, cioè non ho controllato se ci sono errori di copia/incolla.
    Ok ammetto di non essere abituato alle classi in J ma il comportamento è identico ad una classe che viene scaricata dalla memoria (guardandola dall' swf che la richiama). Facendo il debug non mi ritrovo le proprietà tra le variabili!
    Consigli?

    p.s.: ovviamente mi sono sincerato che flash processasse le righe dove assegno true alla variabile d'esempio.
    __________________
    non darmi consigli se non te li chiedo!
    .: DUCATI FOR LIFE :.
    *Vinniec*
    __________________

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.