Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410

    larghezza jpg esterna dentro ciclo

    Ciao a tutti!
    Sto caricando delle immagini esterne dentro a dei clip creati dinamicamente. funziona ma la img che vado a caricare hanno larghezze diverse e quindi per posizionare le clip dovrei recuperare la larghezza delle jpg che carico... x il momento c'è H=200.
    avevo provato a nidificare un ciclo che aspettasse il caricamento e poi mi desse le misure ma evidentemente continuo a sbagliare ...

    datiesterni = new LoadVars();
    datiesterni.onLoad = function(success) {
    if (success) {
    _root.createEmptyMovieClip("anteprime", 1);
    i = 0;
    while (++i<=3) {
    anteprime.createEmptyMovieClip("th"+i, i);
    mc = eval(anteprime["th"+i]);
    mc.loadMovie(datiesterni["thumb"+i]);

    //mc._alpha = 0;
    H = 200;
    mc._x = H*i+10;
    }
    }
    //carica immagini
    img_prodotto.loadMovie(datiesterni.immagine);
    nomeP.text = datiesterni.nome;
    };
    datiesterni.load("filtro_scheda.asp?IDProdotto=1") ;

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    il problema del loadMovie è che non saprai mai con esattezza quando le informazioni dell'immagine caricata esternamente sono disponibili, salvo un giro che prende solo risorse alla cpu...

    da flash 2004 c'è una nuova classe che aiuta a caricare più semplicemente i filmati o le immagini esterne, tale classe contiene un metodo che dà la certezza che l'immagine sia stata caricata e le informazioni sul file esterno siano realmente disponibili

    la classe è MovieClipLoader

    mentre il metodo da usare è MovieClipLoader.onLoadInit

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    grazie mille velocissimo e gentilissimo.
    Non l'ho mai usata in effetti
    ... adesso studio!!!

    Ma vuol dire che tutti i preload che ho fatto con loadmovie funzionano a casaccio e non me nesono mai reso conto??? sono un disastro

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da frifrini
    grazie mille velocissimo e gentilissimo.
    Non l'ho mai usata in effetti
    ... adesso studio!!!

    Ma vuol dire che tutti i preload che ho fatto con loadmovie funzionano a casaccio e non me nesono mai reso conto??? sono un disastro
    no, assolutamente... i preload "vecchi" sono validi ma diciamo che per funzionare perfettamente avrebbero bisogno di un po' di accorgimenti, alcuni suggeriti a suo tempo dallo stesso autore della pillola che ti ho consigliato (andr3a) e principalmente si tratta di verificare la percentuale di caricamento con un Math.floor in modo da essere certi che l'operazione tra bytesLoaded e bytesTotal dia esattamente 100, inoltre la verifica più sicura che chiude poi la funzione di preload

    if(bytesLoaded >= bytesTotal && bytesTotal > percentuale && percentuale == 100)

    in più io aggiungerei una cosa...

    si potrebbe considerare il fatto di usare un clip sempre vuoto, per cui le sue dimensioni iniziale sarebbero uguali a 0, e poi nella verifica del preload si potrebbe mettere il controllo in cui solo se le dimensioni del clip sono diverse da 0, sarà possibile utilizzarle...

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    Mi consolo.
    Forse comunque era questa imprecisione nella quantità di bytes caricati a non permettere alle clip di disporsi in modo esatto... mi sembrava di aver usato comunque questo metodo per centrare le jpg in una clip dopo averle caricate ma forse mi sbaglio oppure sto sbagliando qualcosa nel codice.
    10 minuti di pausa e poi ci riprovo!
    grazie ancora!

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    al volo ti scrivo una funzione universale, cambiala poi per le tue esigenze
    codice:
    function preload(target, interval){
    	var car = target.getBytesLoaded();
    	var tot = target.getBytesTotal();
    	var perc = Math.floor((car/tot)*100);
    	if(!isNaN(perc)){
    		trace ("Caricamento..."+perc+"%");
    	}
    	if(car>=tot && tot>perc && perc==100){
    		if(target._width>0 && target._height>0){
    			clearInterval(target[interval]);
    			trace ("Dimensioni: "+target._width+"x"+target._height+" pixel");
    			// altre azioni legate alle dimensioni dell'immagine
    		}
    	}
    }
    mioClip["interval"] = setInterval(preload, 100, mioClip, "interval");

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    grazie mille!!! gentilissimo!!!!!!!!!!!!!!!!!!!!!!!


  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    Se sei ancora di giro quest'oggi ti chiedo ancora un'aiuto...
    Il preload che mi hai passato funziona alla perfezione. Selo applico ad una clip contenitore mi faccio restituire tutte le informazioni che mi servono. Quello che continua a non riuscirmi è applicarlo all' inteno del ciclo.

    Nella mia incapacità logica...

    datiesterni = new LoadVars();
    datiesterni.onLoad = function(success) {
    if (success) {
    _root.createEmptyMovieClip("anteprime", 1);
    i = 0;
    while (++i<=3) {
    anteprime.createEmptyMovieClip("th"+i, i);
    mc = eval(anteprime["th"+i]);
    mc.loadMovie(datiesterni["thumb"+i]);
    // qui inserisco/richiamo la funzione preload che aspetta il caricamento di mc e mi fornisce i dati //che mi servovo
    //eseguo le azioni per posizionare il primo mc creato
    }
    }
    };

    invece nada, mi carica tutto senza aspettare... evidentemente mi sfugge qualche cosa...

    :master:

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    se hai fatto così dovrebbe essere corretto...
    codice:
    function preload(target, interval){
    	var car = target.getBytesLoaded();
    	var tot = target.getBytesTotal();
    	var perc = Math.floor((car/tot)*100);
    	if(!isNaN(perc)){
    		trace ("Caricamento..."+perc+"%");
    	}
    	if(car>=tot && tot>perc && perc==100){
    		if(target._width>0 && target._height>0){
    			clearInterval(target[interval]);
    			trace ("Dimensioni: "+target._width+"x"+target._height+" pixel");
    			// altre azioni legate alle dimensioni dell'immagine
    		}
    	}
    }
    datiesterni = new LoadVars();
    datiesterni.onLoad = function(success) {
    	if (success) {
    		_root.createEmptyMovieClip("anteprime", 1);
    		i = 0;
    		while (++i<=3) {
    			anteprime.createEmptyMovieClip("th"+i, i);
    			mc = eval(anteprime["th"+i]);
    			mc.loadMovie(datiesterni["thumb"+i]);
    			mc["interval"] = setInterval(preload, 100, mc, "interval");
    		}
    	}
    };

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    Mmm... mi sembra di si ma evidentemente sbaglio ancora...

    le immagini caricate con il ciclo sono 3, la seconda l'ho fatta bella pesante per verificare il funzionamento e faccio scrivere "sto caricando" e "finito" a video...

    risultato: compaiono le foto 1 e 3 poi la scritta finito e dopo un bel pò l'immagine 2

    questo il codice completo:

    function preload(target, interval) {
    var car = target.getBytesLoaded();
    var tot = target.getBytesTotal();
    var perc = Math.floor((car/tot)*100);
    if (!isNaN(perc)) {
    stato.text = "sto caricando";
    }
    if (car>=tot && tot>perc && perc == 100) {
    if (target._width>0 && target._height>0) {
    clearInterval(target[interval]);
    larghezza = mc._width;
    stato.text = "finito";
    }
    }
    }
    //caricamento dati
    System.useCodepage = true;
    datiesterni = new LoadVars();
    datiesterni.onLoad = function(success) {
    if (success) {
    _root.createEmptyMovieClip("anteprime", 1);
    i = 0;
    while (++i<=3) {
    anteprime.createEmptyMovieClip("th"+i, i);
    mc = eval(anteprime["th"+i]);
    mc.loadMovie(datiesterni["thumb"+i]);
    mc["interval"] = setInterval(preload, 100, mc, "interval");
    mc._x = larghezza*i+10;
    misure.text = larghezza;
    }
    }
    img_prodotto.loadMovie(datiesterni.immagine);
    nomeP.text = datiesterni.nome;
    };
    datiesterni.load("filtro_scheda.asp?IDProdotto=1") ;

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.