Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    loadMovie lento rispetto al codice

    ciao a tutti,

    uso FLASH MX PROFESSIONAL 2004,

    Ho un grosso problema nel recuperare le proprietà (_x, _y, _width, height) di un movieclip subito dopo il suo caricamento tramite il loadmovie.
    Ho già risolto in passato questo problema ma, ora, richiamando il movie clip tramite un


    this["nomeMovieClip"];

    ed essendo tutto il codice incapsulato in una funzione ..non riesco a far funzionare la precedente soluzione.

    E' cmq un po' complesso da spiegare e quindi, allego il file sorgente...

    >sorgente<

    ...se qualcuno avesse voglia di dare un okkiatina.. :-D

    Grazie!!

  2. #2
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    il codice funziona benissimo.
    Oppure non ho capito di cosa hai bisogno
    cmq da riga 47 a riga 50


    else {
    dimX = vuota._width;
    trace("vuota._width="+vuota._width)
    trace("vuota._height="+vuota._height)

  3. #3
    no.. dunque.. il mio problema è sulle thumb del preview.

    Ovvero, non ho a disposizione delle immagini jpg perfettamente quadrate e il mio problema è di doverle centrare nei quadratini della preview.
    Dovrei quindi utilizzare delle png quadrate che permettono la trasparenza senza la perdita di qualità per avere le immagini perfettamente centrate nei quadratini della preview. Il caricamento delle immagini piccoline della preview è fatto, pero', dinamicamente attraverso un loadmovie inserito in un ciclo for e, purtroppo, il loadmovie non accetta il formato png per il caricamento ma, solamente il jpg e l'swf.
    Allora ho risolto creando dei piccoli swf (55px x 55px) con solamente al loro interno le immagini piccoline centrate ma, poi, mi sono scontrato con la dura realtà di avere almeno una quindicina di gallerie e mi sembra un lavoro assurdo dover fare tutti quegli swf e che non ci sia un metodo + intelligente.

    Sono così ritornato all'idea delle jpg e di inserire un banalissimo algoritmo per il loro centramento nei quadratini della preview, ma il problema è che mentre viene eseguito il loadmovie dell'immagine piccola è già stato letto il codice successivo relativo all'algoritmo di centramento e.. (qui sta il primo problema) tutti i parametri letti o scritti per l'immagine danno uno "zero" perchè l'immagine non è stata ancora caricata al momento della loro esecuzione.
    Questo problema sono riuscito a risolverlo per l'immagine "grande"
    che viene caricata sempre da codice e che necessita anch'essa di essere centrata ma, sono riuscito a risolvere il problema solo perchè il movieclip vuoto dove l'immagine viene caricata ha un nome di istanza fisso "vuota".. per le immagini piccoline invece lo stesso metodo non funziona in quanto il nome di istanza dei diversi movieclip dove vengono caricate le immagini piccoline, vengono associati volta per volta attraverso un this["mc"+i+j] e.. il codice che ho usato per lo stesso problema, nelle immagini grandi, non piace molto questa cosa!

    Come avevo già detto è difficile esprimere bene il problema.. ci ho provato e spero di non essere stato troppo "ingarbugliato".. spero che qualcuno, vedendo magari il codice del sorgente, abbia l'illuminazione che io non riesco ad avere!

    Grazie! e spero a presto!

  4. #4
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    ora ho capito,
    questa è molto grezza (in fondo è domenica cosa pretendi)
    ma dovrebbe funzionare basta implementare il resto:

    j=1
    i=1
    function gigi(){
    if(_root.j<=3) {
    if(_root.i<=4) {
    j=_root.j
    i=_root.i
    this["mc"+i+j].loadMovie((i) +""+(j) +".jpg");
    _root.onEnterFrame = function() {
    var l = this["mc"+i+j].getBytesLoaded();
    var t = this["mc"+i+j].getBytesTotal();
    if (t == l) {
    this.onEnterFrame = undefined;

    trace(this["mc"+i+j]._width)
    this["mc"+i+j]._alpha = 50;
    _root.i++
    if(_root.i==5){_root.i=1; _root.j++;}
    _root.gigi()
    }
    }
    }
    }
    }
    gigi()


    prova e facci sapere

  5. #5
    Prima di tutto, grazie per l'impegno domenicale!! Ho un piccolo problema ancora, anche se piccolissimo non è, forse dettato dalla lucidità del lunedì mattina, ma.. la funzione gigi() va inserita all'interno del ciclo for?

    Grazie ancora!

  6. #6
    ahhh si che cieco che sono.. credo di aver capito.. sei stato proprio un grande! la tua funzione mi sembra perfetta! Anche se non ho ancora capito benissimo cosa ti abbia portato su quella strada o meglio.. avevo provato anch'io una sorta di preload delle immagini picocline ma.. non mi funzionava per nulla!

    Grazie!!!!!!

  7. #7
    ops... ho cantato vittoria troppo presto... allora funzionerebbe, ma solo sulla prima immagine piccolina e non sulle altre..

    praticamente funziona solo sulla "mc11"

  8. #8
    Niente.. ho provato in 1000 modi cercando di far "ciclare" la i e la j sia nel ciclo for principale che in uno aggiunto all'occorrenza.

    Ho provato anche a scrivere alla cieca una cosa del tipo:

    j=1;
    i=1;
    gigi();
    j=1;
    i=2;
    gigi();
    j=1;
    i=3;
    gigi();
    ecc..
    ecc..

    ma la funzione gigi() alla fine modifica solo l'ultima immagine richiamata (l'immagine richiamata con l'ultima definizione di i e j)

    Il problema è per caso dovuto al fatto che è una funzione ricorsiva?

    Grazie!.. e scusate se ho risposto tante volte in questa discussione..

  9. #9
    OK.. pardon.. risolto.. per chiunque sia interessato alla discussione, la funzione inviata da alpeweb è ricorsiva e non necessita di alcun ciclo per caricare tutte le immagini.. magari basta ridefinire la dimensione massima degli indici di riga e di colonna per essere adattata. Dopo di che basta inserirla in "coda" a tutto il vostro codice e funziona perfettamente!

    ho aggiunto qualche piccolo ritocco per il ridimensionamento delle immagini e il loro centramento, ecco il codice:

    j=1;
    i=1;
    function gigi() {
    if (_root.j<=3) {
    if (_root.i<=4) {
    j = _root.j;
    i = _root.i;
    this["mc"+i+j].loadMovie("img/Sport/Calcio/"+"gal1"+"/"+(i)+""+(j)+".jpg");
    _root.onEnterFrame = function() {
    var l = this["mc"+i+j].getBytesLoaded();
    var t = this["mc"+i+j].getBytesTotal();
    if (t == l) {
    this.onEnterFrame = undefined;
    trace(this["mc"+i+j]._width);
    trace(this["mc"+i+j]._height);
    larghezza = this["mc"+i+j]._width;
    altezza = this["mc"+i+j]._height;
    costX = 55/larghezza;
    costY = 55/altezza;
    x0 = this["mc"+i+j]._x;
    y0 = this["mc"+i+j]._y;
    if (altezza<=larghezza) {
    this["mc"+i+j]._width = 55;
    this["mc"+i+j]._height = altezza*costX;
    } else {
    this["mc"+i+j]._height = 55;
    this["mc"+i+j]._width = larghezza*costY;
    }
    this["mc"+i+j]._x = x0+(55-this["mc"+i+j]._width)/2;
    this["mc"+i+j]._y = y0+(55-this["mc"+i+j]._height)/2;
    this["mc"+i+j]._alpha = 50;
    _root.i++;
    if (_root.i == 5) {
    _root.i = 1;
    _root.j++;
    }
    _root.gigi();
    }
    };
    }
    }
    }
    gigi();

  10. #10
    ho una nuova domanda e preferisco inserirla qui avendo già messo online il sorgente relativo.

    Se ora volessi che l'immagine grande comparisse con un alpha graduale da 0 a 100 ho visto che non posso farlo con una semplice interpolazione ma, andrebbe fatto da codice.

    Io ho usato il seguente codice:

    alphaBig = function () {
    if (vuota._alpha<=100) {
    vuota._alpha +=1;
    trace(vuota._alpha);
    setInterval(_root.alphaBig, 100);
    }
    };
    alphaBig()

    ma.. funziona solamente al primo caricamento dell'immagine, per i successivi l'immagine compare subito con alpha = 100.

    Come fare?

    Grazie!


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.