Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    9

    [MX] Dati esterni caricati bene, ma non visualizzati

    Ciao, vi espongo il problema che ho nel pubblicare un menu dinamico.

    Al primo frame carico il file .txt esterno e faccio in modo che la vita riprenda a scorrere sulla timeline solo in seguito ad una verifica di effettivo caricamento:

    stop();
    var arts:LoadVars = new LoadVars();

    //uso o uno o l'altro dei seguenti cicli if.
    //(il secondo usa una variabile contenuta nel file esterno)

    if (arts.getBytesLoaded()>=arts.getBytesTotal()) {
    play();
    }
    if (arts.EOF == "true") {
    gotoAndPlay(2);
    }
    arts.load("txts/arts.txt");

    //oppure uso quest'altro sistema (mi sembra che vadano bene tutti):
    if (arts.onLoad(success)) {
    play();
    }
    arts.load("txts/arts.txt");



    Al quidicesimo frame ho questo bello scriptone:

    stop();

    //in un campo di testo per solo scopo di verifica, tanto per avere conferma,
    //faccio apparire il valore "true" del secondo ciclo di prima:
    _root.verifica_txt.text=arts.EOF;

    /* "inputVal" è il numero di voci complessive caricate (contenuto nell'oggetto LoadVars sul primo frame, che carica i dati);
    "numeravoci" mi serve solo a numerare correttamente i duplicati del movieclip "square" (vedi oltre), ossia un singolo rettangolo con campo di testo, che verrà importato dalla libreria
    "_root.items_txt" è solo un campo di testo che mi dirà, in base a "inputVal", quanti elementi avrà il menu
    "numeravoci" è un espediente grafico: mi serve solo a generare un menu con il doppio di "square" rispetto alle voci "inputVal"
    */

    _root.items_txt.text = "Arts. Items: "+arts.inputVal;
    var allSquares:Number = arts.inputVal*2;
    var numeravoci:Number = 0;

    // posizione y del primo "square" attaccato
    var pos:Number = 0;

    // posizione y iniziale di "holder", ossia il clip in cui viene importato e duplicato "square".
    // tale y di "holder", come vedete, è data da una variabile posta in "holder" stesso
    //(non è importante per quanto riguarda il problema vero)

    _root.holder._y = _root.holder.inizialeY;

    // Maschero il "holder" con "maskholder", perché ne ho bisogno!
    _root.holder.setMask(_root.maskholder);


    /* Mi faccio una bella funzione, "doAttach()"
    Questa funzione carica "square" sulla root per creare
    uno "schedario" di voci, disposte ad elenco verticale;
    ma dato che il numero di dati esterni varierà a seconda dei documenti a disposizione,
    il ciclo "if" specifica che gli oggetti "square" ad assumere un nome o un
    valore nel campo di testo saranno solo quelli corrispondenti
    al numero di dati esterni. Scusatemi, forse mi spiego male
    */
    function doAttach() {
    for (i=0; i<allSquares; i++) {
    _root.holder.attachMovie("square", "square"+i, i);
    this.mc = _root.holder["square"+i];
    this.mc._y = _root.pos;
    _root.pos += 14;
    numeravoci++;
    if (numeravoci<=arts.inputVal) {
    this.mc.titolovoce_txt.text = arts[numeravoci];
    } else {
    this.mc.titolovoce_txt.text = "–";
    }
    }
    }
    // ...E si mette in moto subito "doAttach()"
    doAttach();

    ***

    Adesso vi dico cosa succede.
    Una volta messo in rete per prova, questo script agisce bene finché deve caricare le variabili nel flashmovie (la prova di ciò è l'avanzamento della testina sulla timeline: se le variabili non fossero caricate, non arriverei mai al frame 2 e di conseguenza al 15 dove continuo il lavoro).

    Però, e qui forse si ferma la mia conoscenza di actionscript, se in versione locale riesco ad arrivare al frame 15 e a compiacermi dell'apparizione di un bel menu con tante belle voci prese dal file .txt esterno, nonché a visualizzare il testo "true" nel campo di testo di verifica, una volta portato in rete e provato con un browser, il menu non riesce ad essere generato.

    Invece di usare "attachMovie" ho provato a ripensare il mio lavoro e a usare "duplicateMovieClip", ma non è cambiato nulla; ho poi creato un altro ciclo per dar tempo alla funzione "doAttach()" di lavorare, e pensavo di aver fatto una bella pensata. Niente anche stavolta.

    Se qualcuno ha pazienza, se qualcuno può darmi suggerimenti, se qualcuno vuole che sia più chiaro, ne sarei grato.
    Marcello

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    9
    Aggiungo, come note di credits, che questi script li ho elaborati sulla base di tutorials e guide, tra cui FlashMX.it e Actionscript.org.
    M.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    9
    UP.
    due giorni dopo, a parte il fatto che mi sono anche preso una pausa, non sono ancora riuscito a risolvere.
    qualcuno?
    UP.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    9
    Mi pare che l'errore si concentri nella funzione. La ripropongo:


    function doAttach() {
    for (i=0; i<allSquares; i++) {
    _root.holder.attachMovie("square", "square"+i, i);
    this.mc = _root.holder["square"+i];
    this.mc._y = _root.pos;
    _root.pos += 14;
    numeravoci++;
    if (numeravoci<=arts.inputVal) {
    this.mc.titolovoce_txt.text = arts[numeravoci];
    } else {
    this.mc.titolovoce_txt.text = "–";
    }
    }
    }
    doAttach();


    Ho provato a dedicare un bottone per il richiamo al "doAttach()" finale, ma non funziona. Sono ormai certo che, pur caricate correttamente (c'è un ciclo di controllo nel primo frame), le variabili dal file esterno non riescono ad essere raccolte dal costruttore del menu... ciò che non capisco è PERCHE' SUCCEDE SOLO IN RETE E NON IN LOCALE?





    Rinnovo la richiesta di suggerimenti, dunque UP UP UP.

    Marcello

  5. #5
    prova a mettere

    if (arts.onLoad(success)) {
    if(success) {
    play();
    }
    }
    arts.load("txts/arts.txt");
    "...non è detto che sia tardi se non guardi che ora è..."

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    9
    Ti ringrazio Raffa. Tuttavia il suggerimento che mi dai non è utile al problema. Infatti il tuo script:


    if (arts.onLoad(success)) {
    if(success) {
    play();
    }
    }
    arts.load("txts/arts.txt");


    mi pare solo sostitutivo di quelli che ho applicato, a scelta:


    1)
    if (arts.getBytesLoaded()>=arts.getBytesTotal()) {
    play();
    }
    arts.load("txts/arts.txt");


    2)
    //questo sfrutta la variabile "EOF" posta alla fine del .txt
    if (arts.EOF == "true") {
    gotoAndPlay(2);
    }
    arts.load("txts/arts.txt");


    3)
    if (arts.onLoad(success)) {
    play();
    }
    arts.load("txts/arts.txt");


    Il risultato di tutti questi script è il corretto caricamento delle variabili esterne nel movie: ognuno di questi dà conferma del caricamento nel momento in cui avviene "play", o altri comandi di avanzamento.
    Il problema è che le variabili, MA SOLO NEL FLASHMOVIE CHE UPLOADO INSERITO IN UNA PAGINA HTML E CHE PROVO A CONTROLLARE CON UN BROWSER, E NON NEL CONTROLLO "TEST MOVIE" DI FLASH O TRAMITE PLAYER, le variabili insomma non vengono visualizzate così come non viene generato il menu con gli attachMovie via Array.
    Marcello

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    9
    .... dunque credo che il problema sia davvero nell script successivo, lo ripropongo senza commenti (eventualmente si osservi il mio primo post):

    stop();
    _root.verifica_txt.text=arts.EOF;
    _root.items_txt.text = "Arts. Items: "+arts.inputVal;
    var allSquares:Number = arts.inputVal*2;
    var numeravoci:Number = 0;
    var pos:Number = 0;
    _root.holder._y = _root.holder.inizialeY;
    _root.holder.setMask(_root.maskholder);
    function doAttach() {
    for (i=0; i<allSquares; i++) {
    _root.holder.attachMovie("square", "square"+i, i);
    this.mc = _root.holder["square"+i];
    this.mc._y = _root.pos;
    _root.pos += 14;
    numeravoci++;
    if (numeravoci<=arts.inputVal) {
    this.mc.titolovoce_txt.text = arts[numeravoci];
    } else {
    this.mc.titolovoce_txt.text = "–";
    }
    }
    }
    doAttach();

  8. #8
    ma hai provato come ti ho detto io?
    "...non è detto che sia tardi se non guardi che ora è..."

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    9
    Si, ho provato. Vediamo se ho capito dove mettere il tuo script: va sul primo frame, giusto?

    Ho provato a smembrare le varie parti del flashmovie così per tentare di focalizzare il momento in cui si blocca tutto.
    Dunque, ho pubblicato un movie con la sola funzione attachMovie priva di caricamento delle variabili, e funziona (genera tante voci menu, ovviamente vuote poiché non ci sono variabili).
    Il problema è nel passaggio dal primo frame a quello successivo (il sedicesimo, o insomma un frame che non sia troppo vicino al primo), ma – ripeto – solo nella visualizzazione via browser in rete. Le variabili risultano "undefined" come ho constatato pubblicando il movie per un player 7. Come se – assegnate all'oggetto di tipo LoadVars nominato "arts" – le variabili rimanessero bloccate al suo interno. Un difetto di path? Eppure, quando si commettono errori di path, questi si notano anche in un test su locale.
    A questo punto mi viene in mente: sai mica se può esserci qualche difetto nel fatto che utilizzo componenti di Actionscript 2.0 ma esporto il movie per un player 6, o insomma sai se esistono questi tipi di incongruenze? Ad esempio, il browser potrebbe usare una certa versione di player in locale e un'altra in rete (cosa francamente improbabile, o no?)?
    Ho provato con tutti i browser a mia disposizione.
    Se hai tempo, posso uppare il .fla, così ci dai un'occhiata concreta.
    M.

  10. #10
    se hai quei component immagino che tu usi mx2004, quindi non ti posso aiutare (io uso mx) ma per quel che ne so Actionscript 2.0 va con il player 7 quindi il problema potrebbe essere che esporti per il 6.
    "...non è detto che sia tardi se non guardi che ora è..."

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.