Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    OOP: dubbi sull'accesso alle variabili

    Ciao a tutti...
    sto scrivendo una classe per gestire i file xml in actionscript ed avevo bisogno di alcuni chiarimenti...

    posto prima il codice (ancora incompleto) e poi i miei dubbi, se qualcuno avrà voglia di rispondermi...

    class gestoreXML {

    static var xmlHandler:XML = new XML();
    private var xmlFile:String;
    static var allSlides = new Array();
    public var s;
    static var xmlLoaded;

    function gestoreXML(s_xmlFile:String)
    {
    xmlLoaded = false;
    xmlHandler.ignoreWhite = true;
    xmlHandler.onLoad=parse;
    setXmlFile(s_xmlFile);
    caricaXML();
    }

    private function setXmlFile(s_xmlFile:String)
    {
    xmlFile = s_xmlFile;
    }

    public function getXmlFile(s_xmlFile:String)
    {
    return (xmlFile);
    }

    private function caricaXML()
    {
    xmlHandler.load("eventi.xml");
    }

    public function getXml()
    {
    if (xmlLoaded == true) {
    trace ("AS" + allSlides);
    return allSlides;
    } else {
    trace ("xml non ancora caricato");
    }
    }

    public function xmlIsLoaded()
    {
    return (xmlLoaded);
    }

    public function setXmlLoaded()
    {
    xmlLoaded = true;
    }


    private function parse(success){
    if (!success) {
    trace("errore da gestire");
    return;
    }
    var slides = xmlHandler.childNodes[0].childNodes;
    for (var s=0; s<slides.length; s++) {
    var thisData = new Object();
    var nodesInSlide=slides[s].childNodes.length;
    for (var n=0; n<nodesInSlide; n++) {
    var thisNodeName=slides[s].childNodes[n].nodeName.toUpperCase();
    var theVal=slides[s].childNodes[n].firstChild.nodeValue;
    thisData[slides[s].childNodes[n].nodeName]=theVal;
    }
    allSlides[s]=thisData;
    }
    xmlLoaded = true;

    }
    }

    i miei dubbi riguardano lo scope della funzione parse, che non riesce ad accedere ai metodi ed alle variabili della classe che non siano static.
    il problema penso sia nel metodo di chiamata alla funzione, cioè xmlHandler.onLoad=parse;
    ma sinceramente non avrei idea di come metterlo diversamente...
    quello che mi sembra succeda è che parse diventi "figlio" di xmlHandler è che quindi non condivida lo spazio dei nomi con la classe, non riesco neanche a referenziarli tramite _parent...

    qualche consiglio?

    p.s. (se qualcuno fosse interessato a questa classe una volta completata puoi mandarmi un messaggio che gliela mando volentieri!!! )

  2. #2
    per quello che vuoi fare puoi ricorrere ad un trucchetto per confondere il compilatore di flash, che tanto di strict typing ne capisce ben poco anche lui:

    codice:
    var myXML:XML = new XML()
    myXML['target'] = this
    myXML.load( .... )
    myXML.onLoad = function(){
        // così hai accesso allo scope che volevi
        trace(this.target)
    }

    altrimenti ti devi creare una classe che estenda la classe xml e che preveda la possibilità di assegnarle uno scope.
    Free ActionScript Editor

    Y en silencio y sin cruzar una palabra
    solamente una mirada es suficiente para hablar

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