• Super User

    classe PicLoader

    Ciao Flash gente,
    avendo notato grossi problemi da parte di molti di voi nel caricare filmati o immagini esterne ho deciso di scrivere 2 righe a riguardo.

    Innanzitutto vorrei dire che ,a parte la logica Actionscript 2.0 che scriverò e che scaricherete, i concetti sono mie opinioni personabili nonchè consigli.

    I metodi della classe MovieClip: loadMovie e loadMovieNum sono stati implementati soprattuto per chi non ha una conoscenza piuttosto discreta di Actionscript.
    Questo non vuol dire che permettano di fare tutto e di monitorare i bytes di caricamento del filmato principale oppure di interagire completamente col filmato esterno una volta caricato come fosse una Movieclip.
    Personalmente il mio consiglio è di abbandonare questi 2 metodi ormai obsoleti e di utilizzare la classe MovieClipLoader per caricare filmati esterni o immagini esterne.

    Allego una classe scritta dal sottoscritto.
    Come noterete dal .fla viene istanziata la classe PicLoader e viene passato un valore (stringa) che è la path dell'swf esterno che volete caricare.
    A sua volta la classe PicLoader utilizza la classe MovieClipLoader per poter caricare l'swf esterno.
    Nel file .as c'è il metodo onLoadInit, questo metodo vi permette di interagire completamente con l'swf (una volta caricato) come fosse una movieclip e quindi utilizzare tutte le proprietà della classe Movieclip (ad esempio _x,_y,_alpha,_rotation ecc ecc ).

    ecco l'url per scaricare i files:
    http://www.actionscript.ws/gt_forum/PicLoader.zip

    Per favore se qualche moderatore può 'stickare' questo post in modo che gli utenti possano leggerlo gli e ne sarei grato.


  • User

    ciao flashcoder, forse ho è problema mio ma nello zip nn c'è il file .as, ma il lavoro funziona lo stesso...

    dimmi se ho frainteso io le tue parole o sto assistendo ad un'altro mistero di flash

    grazie


  • Super User

    Ciao Knight, il file .as è dentro....controllo di non essermelo dimenticato....


  • Super User

    Si hai ragione, scusami tanto ...nella fretta mi è sfuggito.
    Comunque l'ho aggiunto.
    Prova adesso:

    http://www.actionscript.ws/gt_forum/PicLoader.zip


  • User

    si adesso c'è bene, allora ho assistutti ad un altro mistero, senza .as i 2 .swf interagivano l ostesso...


  • Super User

    No quello non è un mistero, cioè l'swf che c'era nello zip era già stato lanciato da me e quindi compilato con la classe PicLoader, per cui quando lo hai aperto funzionava bene, ma se aprivi il fla e pubblicavi l'swf allora in quel caso ti dava l'errore ' la classe PicLoader non è stata trovata' .


  • User

    vero... quello si mi era capitato... poi ho riaperto lo zip e provato solo i swf e andavano...

    cmq grazie di tutto


  • User Newbie

    Ciao Flep, sono nuovo in questo forum. Mi sono imbattuto qui perchè ho problemi con un preload per filmati swf esterni per il nostro sito aziendale.
    Il sito è:
    http://www.gesconweb.it/sito come potrai notare in alcune pagine i contenuti vengono caricati dopo, lo puoi notare sicuramente in PORTFOLIO e nei lavori descritti dentro.
    Nota bene, quando andrai ad aprire un lavoro in portfolio, che il primo lavoro che apri il loading no nparte, se ne apri un secondo invece si.

    Il problema vero è questo:

    I lavoro prensenti in portfolio sono sei singoli swf caricati esternamente mediante preload.swf che faccio caricare in un clip vuoto nel primo fotogramma di sogni swf esterno. Comprendi?
    Il codice del preload è questo:

    1. fotogramma
      /*
      Definisco le variabili "bytes caricati" e "bytes totali" della movie che ospita il preload
      /
      var caricando = _parent.getBytesLoaded();
      var totali = _parent.getBytesTotal();
      /

      Quando questi due valori sono uguali il filmato che ospita il preload
      parte (va al frame 2)
      /
      if (caricando == totali) {
      _parent.gotoAndStop(2);
      }
      /

      definisco le variabili in kb e la percentuale di caricamento
      con valori interi
      */
      var kbcaricati = Math.round(caricando/1024);
      var kbtotali = Math.round(totali/1024);
      var percento = Math.round((kbcaricati/kbtotali)100);
      // da il valore al campo di testo dinamico
      percentuale.valore = percento;
      // nasconde la barra di scorrimento e la dimensiona.
      barra._xscale = 1;
      barra._visible = false;
      /

      setta la visibilità della barra di scorrimento
      e la ridimensiona proporzionalmente alla percentuale di caricamento
      */
      if (percento>1) {
      barra._visible = true;
      barra._xscale = percento;
      }

    2. fotogramma
      gotoAndPlay(1);

    Sono arrivato alla conclusione che forse il loading è troppo pesante ma preload.swf pesa solo 21Kb e altri forum che lo hanno analizzato hanno detto che come peso va bene.
    Ora pero' come posso far visualizzare questi loading sempre e non trovarmi che i primi swf che carica non si vedono i successivi invece si?

    Aspetto con ansia una tua risposta e spero di essere stato chiaro. CiAO GRAZIE DEL TUO AIUTO.

    mickey


  • Super User

    Ciao,
    a me sembra che tutto funzioni correttamente.
    Dove non vedo la preloadBar penso sia perchè l'swf che carichi è leggero da riuscire a visualizzarla, ma il contenuto me lo apre subito.


  • User

    confermo quello che ha detto flep e aggiungo un complimenti buon lavoro


  • User Newbie

    ciao Flep ho provato il tuo codice e devo dire..grandioso!!!!

    però ho riscontrato che non si piazza su livelli ma direttamente sullo stesso livello del movie che lo richiama.

    come posso fare per spostarlo su un altro livello?
    grazie


  • Super User

    Ciao giaiu,
    non pensare ai livelli, dovresti pensre ai depths dell'swf (circa 16000).
    Per 'swappare' il suo depths basta che usi il metodo swapDepths() e lo metti dove vuoi.