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

    [MX] loadMovie all'interno di un ciclo

    Salve a tutti,

    spero veramente che non siate già tutti in vacanze.

    Ho un grosso problema con loadMovie:
    io carico da un file esterno (diciamo previsioni.txt) un elenco di valori che mi elencano il nome del clip in cui caricare il clip esterno (s1, s2, sn) e il nome del clip esterno da caricare (pippo.swf, pluto.swf, xy.swf, etc.).

    Il risultato dovrebbe essere:
    s1.loadMovie("pippo.swf");
    s2.loadMovie("pluto.swf");
    sn.loadMovie("xy.swf");
    etc etc

    Le variabili le leggo con l'oggetto loadVars:
    dprev = new LoadVars();
    conta=0;
    dprev.Load ("previsioni.txt", dprev);

    Quindi alla lettura delle stesse creo il ciclo
    dprev.onLoad = function (success) {
    conta = dprev.num;
    for (i=0; i<=1; i++) {
    loadMovie("pippo.swf", s1);
    }

    };

    Al di fuori del ciclo funziona tutto perfettamente all'interno del ciclo non ho errori ma non mi carica nulla.

    Sono mortificato per la lunghezza del messaggio e vi prego di scusare l'inesperienza (programma in php e .net, in ActionScript è la prima esperienza).


    Un saluto e un grazie in anticipo,
    Vladimiro

  2. #2
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    perchè tu dall'interno di un oggetto gli stai dici di fare operazioni su un movie clip che invece è da qualche altra parte

    probabilmente se metti il percorso completo o se da lì lanci una funzione che è dove sono i movieclip, funzionerà, sempre se non ci sono altri problemi perchè non ho capito come hai scritto il for

    diciamo che i movieclip sono sulla timeline principale

    dprev.onLoad = function (success) {
    conta = dprev.num;
    for (i=0; i<=1; i++) {
    loadMovie("pippo.swf", _root[s1]);
    }
    };

    ma se non riporti lo script completo e non mi dici dove sono i movie clip più di questo non posso dirti

  3. #3
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    non ho capito come hai scritto il for

    1- primo perchè non ho capito perchè lo fai cominciare da zero

    2- perchè non ho capito perchè lo fai durare un solo ciclo

  4. #4
    non ho capito come hai scritto il for

    1- lo faccio cominciare da zero perchè lavora su un array php a base 0

    2- lo faccio durare un solo ciclo per esigenze di test.

    In una precedente realizzazione funzionante questo era il ciclo:
    dprev.onLoad = function(success) {
    conta = dprev.num;
    for (i=0; i<=conta; i++) {
    appoPosXY = "dprev.citta"+i;
    appoPrev = "dprev.prev"+i;
    with (eval(eval(appoPosXY))) {
    attachMovie(eval(appoPrev), "pippo", 1);
    }
    }

    };

    dove appoPosXY è un clip posizionato su un livello (che recupero dinamicamente) e appoPrev è un simbolo di libreria che si aggancia ad appoPosXY.

    Purtroppo questa soluzione (funzionante) ha l'inconveniente di costringermi a caricare tutti i clip che mi servono in libreria e l'swf finale veniva a pesarmi più di 150k.

    Da quì l'idea di utilizzare una libreria esterna.
    A questo punto però non posso più fare direttamente:
    attachMovie(eval(appoPrev), "meteo", 1);

    ma devo prima far eseguire un loadMovie al mio appoPosXY, quindi utilizzare l'attachMovie.
    Purtroppo mi sono bloccato e non riesco ad uscirne (ma è possibile?) nel caricamento dinamico di simboli esterni - il ciclo con il loadMovie per l'appunto.

    Un saluto a tutti,
    qualunque suggerimento sarà il benvenuto e immeditamente testato.


    Vladimiro

  5. #5
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    il punto è che mi devi dire come si chiamano i movie clip su cui si fa l'operazione, se si chiamassero mc0, mc1 eccetera va bene sennò bisogna aumentare i (all'interno del comando che li individua)

    dove sono questi movie clip?

    e le variabili con i nomi degli swf si chiamano citta da quello che ho capito?

    sennò così a tentoni non posso darti lo script preciso

    se l'oggetto dprev fosse all'interno della stessa timeline in cui ci sono i movie clip si risolve velocemente, ma lo devo sapere

  6. #6
    Innazitutto grazie mille per la disponibilità.

    Allora:
    i movie clip su cui si fa l'operazione si chiamano s0, s1, etc e si trovano nel terzo fotogramma del primo livello (denominato Action).

    le variabili con i nomi degli swf si chiamano prev.

    l'oggetto dprev lo creo nel primo fotogramma del primo livello ( denominato Action) quindi all'interno della stessa time line anche se in fotogrammi diversi.

    Il mio tentativo era:
    - nel primo fotogramma leggo le variabili (con LoadVars)
    - quindi ciclo fra i vari s0-sn e nel ciclo faccio leggere a ciascuno l'swf appropriato (con LoadMovie)
    - quindi passo al terzo fotogramma ed aggancio il clip corretto a ciascun s0-sn in un altro ciclo (con attachMovie).

    Se sono riuscito a spiegarmi, magari puoi anche dirmi se sto sbagliando tutto a livello architetturale (non lo escludo).

    Grazie ancora,
    Vladimiro

  7. #7
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    è sbagliato concettualmente, mettendolo nell'onLoad tu non puoi sapere quando avviene, la fine del caricamento dati potrebbe avvenire nel primo fotogramma come nel terzo, dipende dalla quantità di dati da caricare

    se avviene nel terzo fotogramma ti va bene, ma se avviene velocemente nel primo fotogramma dove le istanze dei movie clip non esistono, ovviamente ignora il comando

    se hai bisogno per forza di farlo andare avanti con i frame dovresti studiare un'altra formula, ma sarebbe molto meglio se lo mettessi nello stesso frame dove sono i movie clip sennò ti complichi solo le cose

    nel caso che il problema sia fare una spece di preloader dei dati, si può fare in altro modo

    se ho capito bene come hai organizzato il tutto

    dprev.onLoad = function(success) {
    if(success){
    //altrimenti avvine prima
    conta = Number(this.num);
    //sempre meglio assicurarsi che è un
    //numero

    for (i=0; i<=conta; i++) {
    loadMovie(this["prev"+i], _root["s"+i]);
    }
    }
    };

  8. #8
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    this["prev"+i]

    equivale in certa misura all'eval sarebbe come scrivere this.prev2, ad esempio

    con this si fa riferimento allo stesso oggetto in cui c'è lo script, mettendolo in dprev tu dici di cercarlo in dprev e non altrove, _root invece è la timeline principale

  9. #9
    Grande Stormy, funziona!

    Ne approfitto per l'ultimo problema.
    Ho inserito tutto il codice (sia il loadMovie sia l'attachMovie) nel primo fotogramma:
    var i = 0;

    dprev = new LoadVars();
    conta=0;
    dprev.Load ("previsioni.txt", dprev);

    dprev.onLoad = function(success) {
    if(success){
    //altrimenti avvine prima
    conta = Number(this.num);
    //sempre meglio assicurarsi che è un
    //numero
    for (i=1; i<=conta; i++) {
    loadMovie("sereno.swf", _root["s"+i]);
    _root["s"+i].attachMovie("sereno_3bm","myLine",2);
    }
    }
    };

    Poi ho tre fotogrammi vuoti.
    Il tutto funziona ma entra in un loop infinito che continua a ricaricarmi e attaccarmi i clip (che quindi sfarfallano alla grande).
    Se elimino i due fotogrammi di troppo (che sono vuoti e inutili) non vedo più nulla. Se inserisco uno stop(); non vedo più nulla.

    Perdona l'inettitudine.

    Vladimiro

  10. #10
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    non lo so dovrei vedere il fla

    potresti in qualche modo farmene un esempio in un nuovo fla (anche senza grafica che tanto non mi serve) e mandarmelo?

    giugno@libero.it

    cioè a me serve quel frame con il loadVars e quelli successivi, nient'altro

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.