ciao a tutti...sono disperato, sto facendo la tesi di laurea sulla creazione di component in flash2004 da inserire in un sito totalmente automatizzato.....e nn c'è reference nè nulla.....dunque, il primo component che faccio è un reader xml component che estende la classe movie clip e richiama un oggetto xml che a sua volta richiama una classe xmlParser....il mio problema è che alla chiamata dell'evento onLoad dell'oggetto xml (tale chiamata la faccio dentro la classe component) vorrei richiamare una funzione, che io ho spudoratamente scritto nella classe del component e che quindi nn posso richiamare all'interno del mio evento...mi spigo meglio con del codice....
naturalmente questo nn funziona, visto che la funzione chiamoFunzione() è propria dell'oggetto component e nn posso referenziarla così....un metodo che ho trovato è stato quello di dare come parametro alla funzione caricamento una funzione della classe component .....codicecodice:class component_xml extends UIComponent { static var symbolName:String = "component_xml"; static var symbolOwner:Object = component_xml; public var mc_box:MovieClip; ... public function component_xml() { } public function init():Void { super.init(); caricamento(); } public function caricamento() { if (FileXML == "") { trace("Valore del file XML non inizializzato.Inserire il path corretto"); return null; } else { objXML = new XML(FileXML); objXML.load(); objXML.onLoad = function(success) { if (success) { chiamoFunzione(); } else { this.caricatoKo(); } }; } } public function chiamoFunzione():Array { trace("ciao");//non funziona } }
Ma anche questo nn mi piaceva, così ho scritto una classe mioXML estendendola da XML e ho sovrascritto l'evento onLoad, richiamando una funzione al suo interno scritta direttamente nella classe mioXML.....questo funziona..codicecodice:class component_xml extends UIComponent { ... public function component_xml() { } public function init():Void { super.init(); caricamento(chiamoFunzione); } public function caricamento(funzioncina:Function) { if (FileXML == "") { trace("Valore del file XML non inizializzato.Inserire il path corretto"); return null; } else { objXML = new XML(FileXML); objXML.load(); objXML.onLoad = function(success) { if (success) { funzioncina(); } else { this.caricatoKo(); } }; } } public function chiamoFunzione():Array { trace("ciao");//funzionaaaa } }
codice:class mioXML extends XML { public var oggettoComponent:component_xml; public var stringaFile:String; public var nomeIstanza:String; public var parser:XML_Parser; public var arrayInterno:Array; public var arrayEsterno:Array; private var numeroNodi:Number; public function mioXML(file:String, nomeIst:String, nomeComponent:component_xml) { super(); this.stringaFile = file; this.nomeIstanza = nomeIst; this.oggettoComponent=nomeComponent; } public function load() { super.load(stringaFile); } public function onLoad():Boolean { if (this.loaded) { this.caricatoOk(); return (true); } else { this.caricatoKo(); return (false); } } private function caricatoOk():Void { parser = new XML_Parser(this);//oggetto scritto da me che fa il parser dell'xml numeroNodi = parser.getNumeroNodi(); this.oggettoComponent.setArray(this.getValoriTotali()); _root[""+nomeIstanza].loading._visible = false;//variabile del component } private function caricatoKo() { _root[""+nomeIstanza].loading._visible = true;//come sopra } ...//altre funzioni }
arrivo alla domandona....ma zio santissimo,i famosi dispatchEvent,Listener e compagnia bella li posso usare???come????senza dover ricorrere a sovrascrittura di classi e a trick inutili!!!!qualcuno ha idee???qualcuno ha già provato

Rispondi quotando