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

    xml-->>array-->>recupero dati ....spariti

    xml-->>array-->>recupero dati ....spariti

    Buona giornata,
    Ormai da giorni rileggo e tento ma non riesco a capire l'errore, son fuso e non penso di trovare la soluzione. Se qualcuno sa dove ho sbagliato?

    Problema:
    carico dati in vari Array con la metodica diretta di inserimento come newarray,(3 array)
    ed altri dati tramite caricamento da xml (altri 7).
    Facendo il debug li vedo tutti a posto nelle loro caselline.
    Dovendo poi gestire i dati per una grafica in frame successivi, non riesco a utilizzare i dati precaricati da xml.

    Esiste differenza nella gestione dei vari array?
    Ringrazio infinitamente per le eventuali risposte.

    allego il programma ridotto per motivi di spazio:

    /DEFINISCO CARICAMENTO ARRAY

    filexml = "datti6.xml";
    mioxml = new XML();
    myarray = new Array();
    myarray2 = new Array();
    myarray3 = new Array();
    idvolo = new Array();
    hmela = new Array();
    harrivo = new Array();
    hquantita = new Array();

    /ARRAY CON VALORI FISSI

    var linksArr:Array = new Array(new Array("foto uno", "../fiori/5.jpg"), new Array("My MacBook", "../fiori/1.jpg"));
    var posf:Array = new Array(new Array(15, 1), new Array(8, 2));
    var mesi:Array = new Array(new Array("prezzo", 0), new Array("Disponibilità", 0), new Array("Quantità", 0), new Array("Gennaio", 0));

    /ARRAY DA XML

    quantita = new Array();
    arrivo = new Array();
    nome = new Array();
    nome2 = new Array();
    giorno = new Array();
    prezzo = new Array();
    offerta = new Array();
    arrivo = new Array();
    /////////////////////CARICO ARRAI
    ApriXML();
    function ApriXML()
    {
    mioxml.load(filexml);
    mioxml.onLoad = ElaboraXML;
    function ElaboraXML(success)
    {
    if (mioxml.loaded)
    {
    myarray = mioxml.childNodes;
    for (j=0; j<=myarray.length; j++)
    {
    if (myarray[j].nodeName == "dataroot")
    {
    myarray2 = myarray[j].childNodes;
    for (i=0; i<=myarray2.length; i++)
    {
    if (myarray2[i].nodeName == "Foglio1")
    {
    _root.idvolo.push(myarray2[i].attributes.id);
    myarray3 = myarray2[i].childNodes;
    for (k=0; k<=myarray3.length; k++)
    {
    if (myarray3[k].nodeName == "nome")
    {
    _root.nome.push(myarray3[k].childNodes.toString());
    _root.hnome.push(myarray3[k].attributes.h);
    }
    if (myarray3[k].nodeName == "nome2")
    {
    _root.nome2.push(myarray3[k].childNodes.toString());
    _root.hnome2.push(myarray3[k].attributes.h);
    }
    if (myarray3[k].nodeName == "quantita")
    {
    _root.quantita.push(myarray3[k].childNodes.toString());
    _root.hquantita.push(myarray3[k].attributes.h);
    }if (myarray3[k].nodeName == "prezzo")
    {.....}
    if (myarray3[k].nodeName == "offerta")
    {.....}
    if (myarray3[k].nodeName == "giorno")
    {......}
    if (myarray3[k].nodeName == "mese")
    {.......}
    }}}}}}}

    /PARTE GRAFICA DI VISULIZZAZIONE

    my_mc._visible = false;
    p1._visible = false;
    m1._visible = false;

    /VERIFICA DEI VALORI CARICATI

    i = linksArr.length;
    e = mesi.length;
    s = nome.length;
    u = prezzo.length;
    t = offerta.length;
    trace("array : "+i+" mesi "+e+" prezzo "+u+" nome "+s+" offerta "+t);
    var pos:Number = my_mc._y;
    var fos:Number = p1._y;
    var mos:Number = m1._x;
    var i:Number;
    var e:Number;
    var kk:Number;
    var kk = 0;
    var b55:String;

    /GRAFICA DI SCRITTE,RICHIAMODI FOTO , E CLIP

    for (e=0; e<mesi.length; e++)
    {var mes:MovieClip = m1.duplicateMovieClip("mess"+e+"_mc", e);
    if (e<3){ mes._width = 50; }
    if (e<3){ kk = 60; }
    else
    { kk = 35; }
    mes._x = mos;
    mos += kk;
    var b1:String = mesi[e][0];
    var b2:String = mesi[e][0];
    var b55:String = prezzo[e][0];
    mes.b3.text = b2;
    var messe:MovieClipLoader = new MovieClipLoader();
    trace("__b1__"+b1+" __b2__"+b2+" __b55__"+b55 );}

    for (i=0; i<linksArr.length; i++)
    {var mc:MovieClip = my_mc.duplicateMovieClip("btn"+i+"_mc", i+20);
    var p2:MovieClip = p1.duplicateMovieClip("ftn"+i+"_fc", i+50);
    mc._y = pos;
    p2._y = fos;
    p2._x = 270+(posf[i][1]*kk);

    pos += 25;
    fos += 25;

    var links:String = linksArr[i][0];
    var image:String = linksArr[i][1];
    var b1:String = mesi[i][0];
    var b2:String = quantita[i][0];
    var b2:String = mesi[i][0];


    mc.image = image;
    mc.link_txt.text = links;
    q1.text = b1;
    mes.b3.text = b2;



    var load_mcl:MovieClipLoader = new MovieClipLoader();
    var fiore:MovieClipLoader = new MovieClipLoader();

    trace("btn "+i+" b1 "+b1+" b2 "+ b2 +" fos "+fos+" p2x "+p2._x+" kk "+kk);

    mc.onRelease = function()
    { load_mcl.loadClip(this.image,loader_mc);
    loader_mc._xscale = 50;
    loader_mc._yscale = 50;};}}

    /ARRAY RITOVATI
    for (i=0; i<9; i++){trace("valore " + posf [i][0]);}
    /ARRAY SPARITI
    for (i=0; i<9; i++){trace("valore " + prezzo[i]);}

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    non ho letto con attenzione il codice, ma ho pensato al fatto che tu non abbia scritto il codice che utilizza l'array ricavato dall'xml, dentro la funzione onLoad
    devi considerare che il file xml, quando viene letto da flash, ha un tempo di caricamento entro il quale l'array risulta vuoto
    flash ha la possibilità di gestire questo tempo, attendendo il caricamento, ma per poter utilizzare poi l'array riempito, deve essere usato dentro all'evento relativo al caricamento, ti faccio un esempio striminzito con un xml

    codice:
    xml:
    <root>
    <test>test1</test>
    <test>test2</test>
    <test>test3</test>
    <test>test4</test>
    </root>

    Codice PHP:
    var str "test";
    var 
    xml = new XML();
    xml.ignoreWhite true;
    xml.onLoad = function (ok) {
        if (
    this.loaded) {
            
    str this.firstChild.childNodes.toString();
            
    trace(str); // output: <test>test1</test>,<test>test2</test>,<test>test3</test>,<test>test4</test>
        
    }
    }
    xml.load("test.xml");
    trace(str); // output: test 
    se fai una prova, noterai che prima viene stampato l'ultimo trace e poi quello nell'onload, questo perchè il codice viene eseguito tutto fino all'ultima riga, ma escludendo l'evento, che verrà eseguito solo quando l'xml esterno sarà totalmente caricato

  3. #3

    Grazie......

    Mi son perso in un bicchier d'acqua...
    bastava aspettare ed e apparso tutto.

    temevo di aver fatto cavolate, e ho quasi imparato a memeoria il codice per trovare errore.

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.