Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 1999
    Messaggi
    57

    determinare le dimensioni di un'immagine esterna

    ciao a tutti sto impazzendo e non capisco il perchè di tutta sta difficoltà nel trovare la dimensione di un'immagine esterna ... ma le ho provate tutte e non va.

    sto facendo una gallery scroll orizzontale in base al moviemento del mouse ...
    bene tutto a posto gallery funzionante solo che le immagini che carico sono sia verticali che orizzontali ... ho impostato tutte le img alte 500px il problema sta nell'orizzontale se do un valore assoluto di scostamento logicamente mi si sormontano quindi pensavo di vedere la dimensione _width dell'immagine che vado a caricare e fare lo scostamento sulla base di questo dato in modo tale da non far sormontare le verticali con le orizzontali ...

    for (i=1; i<=7; i++) {
    this.img.duplicateMovieClip("img"+i, i);
    this["img"+i].loadMovie("coll/"+i+".jpg");
    H = Number(this["img"+i]._height);
    W = Number(this["img"+i]._width);
    trace("H: "+H);
    trace("W: "+W);
    img._x = i * (img._width + 400);
    }


    il problema sta che nel trace ho perennemente 0 ... non riesco a determinare le dimensioni dell'immagine che vado a caricare ... perchè?
    dove sbaglio!?!?

    aiuto .. sto impazzendo ...
    TomneT
    tomnet@tiscalinet.it


  2. #2
    prima di poter leggere le dimensioni di una immagine esterna caricata devi attendere la fine del caricamento stesso.

    se usi as2 come vedo dal codice ti consiglio di studiarti un po' la classe MovieClipLoader che associata ad un listener ti consente di verificare gli stati di caricamento (inizio, progresso, fine) di un file esterno ed associare ad essi le actions che ti servono.

    qui ad esempio:
    http://www.v2online.it/articoli/moviecliploader.html
    There is nothing conceptually better than Rock 'n' Roll.

    poker is very much like sex. most people think they're the best but don't know what they're doing.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 1999
    Messaggi
    57
    ciao eddie, ti ringrazio della risposta ... non c'ho capito nulla ma ora faccio delle prove ... ;-)
    TomneT
    tomnet@tiscalinet.it


  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 1999
    Messaggi
    57
    non riesco a capire in che punto e come mettere il ciclo per caricare n immagini:


    var mcListener:Object = new Object();
    mcListener.onLoadStart = function(target_mc:MovieClip) {
    target_mc._alpha = 0;
    };

    mcListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
    var percentual:Number = Math.floor((bytesLoaded/bytesTotal)*100);
    trace("Caricati "+bytesLoaded+" bytes di "+bytesTotal+" totali");
    trace("Caricato "+percentual+"% dell'immagine");
    };

    mcListener.onLoadComplete = function(target_mc:MovieClip) {
    target_mc._alpha = 100;
    };

    mcListener.onLoadInit = function(target_mc:MovieClip) {
    trace("Larghezza: "+target_mc._width);
    trace("Altezza: "+target_mc._height);
    };


    var mcLoader:MovieClipLoader = new MovieClipLoader();
    mcLoader.addListener(mcListener);
    mcLoader.loadClip("coll/1.jpg", img);
    TomneT
    tomnet@tiscalinet.it


  5. #5
    i trace delle dimensioni funzionano? direi che dovrebbero...
    There is nothing conceptually better than Rock 'n' Roll.

    poker is very much like sex. most people think they're the best but don't know what they're doing.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 1999
    Messaggi
    57
    ok sono riuscito a fare il ciclo e tutto funziona ... appunto .. tutto funziona come prima col scriptino di 5 righe ... in quanto non riesco a rendere la spaziatura tra le foto caricate "dinamica".

    ho provato a posizionare lo scostamento da per tutto .. ma niente ... non va ... eddie se puoi dimmi almeno lo scostamento dove lo devo mettere per averlo "dinamico" ovvero che la distanza sull'asse delle x delle varie foto caricate sia determinata dalla larghezza della foto stessa.

    posto il codice fatto fin ora:

    var photo_count = 8;
    for (var i = 0; i<photo_count; i++) {
    _root.scr.createEmptyMovieClip("image"+i, _root.scr.getNextHighestDepth());
    //il problema sta in questa riga la variabile larg è uguale alla larghezza di ogni singola foto ma in qualsiasi punto io metta sta riga di codice mi sovrappone le immagini mentre se al posto di larg metto un valore es. 400 tutto funziona
    _root.scr["image"+i]._x = (larg*i)+20;
    }

    var mcListener:Object = new Object();
    mcListener.onLoadStart = function(target_mc:MovieClip) {
    target_mc._alpha = 0;
    trace("Attivato Evento Start, l'immagine sta caricando");
    };

    mcListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
    var percentual:Number = Math.floor((bytesLoaded/bytesTotal)*100);
    trace("Caricati "+bytesLoaded+" bytes di "+bytesTotal+" totali");
    trace("Caricato "+percentual+"% dell'immagine");
    };

    mcListener.onLoadComplete = function(target_mc:MovieClip) {
    trace("Attivato Evento Complete, l'immagine ha terminato il caricamento");
    };

    mcListener.onLoadInit = function(target_mc:MovieClip) {
    larg = target_mc._width;
    trace("Larghezza: "+target_mc._width);
    trace("Altezza: "+target_mc._height);
    };

    var mcLoader:MovieClipLoader = new MovieClipLoader();

    mcLoader.addListener(mcListener);
    for (var i = 0; i<photo_count; i++) {
    mcLoader.loadClip("coll/"+i+".jpg", _root.scr["image"+i]);

    }
    TomneT
    tomnet@tiscalinet.it


  7. #7
    non l'ho provato, vedi se funziona.
    prova a determinare progressivamente la posizione in x delle tue immagini partendo da 0 e aggiungendo ogni volta il valore della larghezza della tua foto poi aggiusta i margini che ti servono dento l'evento onLoadInit
    Codice PHP:
    var X:Number=0;
    var 
    mcLoader:MovieClipLoader = new MovieClipLoader();
    var 
    mcListener:Object = new Object();
    mcLoader.addListener(mcListener);

    mcListener.onLoadStart = function(target_mc:MovieClip) {
        
    target_mc._alpha 0;
        
    trace("Attivato Evento Start, l'immagine sta caricando");
    };

    mcListener.onLoadProgress = function(target_mc:MovieClipbytesLoaded:NumberbytesTotal:Number) {
        var 
    percentual:Number Math.floor((bytesLoaded/bytesTotal)*100);
        
    trace("Caricati "+bytesLoaded+" bytes di "+bytesTotal+" totali");
        
    trace("Caricato "+percentual+"% dell'immagine");
    };

    mcListener.onLoadComplete = function(target_mc:MovieClip) {
        
    trace("Attivato Evento Complete, l'immagine ha terminato il caricamento");
    };

    mcListener.onLoadInit = function(target_mc:MovieClip) {
        
    target_mc._x X;
        
    += target_mc._width;
        
    trace("Larghezza: "+target_mc._width);
        
    trace("Altezza: "+target_mc._height);
    };

    for (var 
    0i<photo_counti++) {
        
    _root.scr.createEmptyMovieClip("image"+i,_root.scr.getNextHighestDepth());
        
    mcLoader.loadClip("coll/"+i+".jpg",_root.scr["image"+i]);

    There is nothing conceptually better than Rock 'n' Roll.

    poker is very much like sex. most people think they're the best but don't know what they're doing.

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Per gestire i caricamenti multipli in maniera più semplice ho scritto una classe che usa MovieClipLoader per caricare e che gestisce, oltre agli eventi già presenti, un altro evento che viene avviato nel momento in cui tutte le immagini sono state caricate, l'evento onMultipleLoadComplete, inoltre possiede delle proprietà da utilizzare durante il caricamento per gestire in maniera più semplice il tutto. Il metodo addLoader aggiunge un caricamento ad un movieclip, mentre con il metodo forEachProperty puoi assegnare il valore di una proprietà ad ogni movieclip registrato per la classe.

    Codice PHP:
    class LoaderManager {
        private static var 
    _loaders:Array;
        private static var 
    _instance:LoaderManager;
        private static var 
    _allowInstantiation:Boolean;
        private static var 
    _mcloader:Object;
        private static var 
    _init:Boolean;
        private static var 
    _counter:Number;
        public var 
    onLoadStart:Function;
        public var 
    onLoadProgress:Function;
        public var 
    onLoadComplete:Function;
        public var 
    onLoadInit:Function;
        public var 
    onLoadError:Function;
        public var 
    onMultipleLoadComplete:Function;
        function 
    LoaderManager () {
            if (!
    _allowInstantiation) {
                throw (new 
    Error("Error: Instantiation failed: Use LoaderManager.getInstance() instead of new."));
            }
        }
        public static function 
    getInstance ():LoaderManager {
            if (
    _instance == null) {
                
    _allowInstantiation true;
                
    _instance = new LoaderManager();
                
    _allowInstantiation false;
            }
            return 
    _instance;
        }
        public static function 
    addLoader (target:MovieClipstr_url:String) {
            if (
    _loaders == null_loaders = [];
            if (
    _counter == null_counter 0;
            if (
    _mcloader == null) {
                
    _mcloader = new MovieClipLoader();
                
    _mcloader.onLoadStart _instance.onLoadStart;
                
    _mcloader.onLoadProgress _instance.onLoadProgress;
                
    _mcloader.onLoadComplete _instance.onLoadComplete;
                
    _mcloader.onLoadError _instance.onLoadError;
                
    _mcloader.onLoadInit = function (target) {
                    
    LoaderManager._instance.onLoadInit(target);
                    
    LoaderManager._counter++;
                    if (
    LoaderManager._counter == _loaders.length) {
                        
    LoaderManager._instance.onMultipleLoadComplete();
                    }
                }
            }
            
    _mcloader.loadClip(str_urltarget);
            
    _loaders.push(target);
        }
        public static function 
    forEachProperty (str_property:Stringvalue:Object) {
            for (var 
    j:Number=0j<_loaders.lengthj++) {
                
    _loaders[j][str_property] = value;
            }
        }
        public static function 
    get loaders ():Array {
            return 
    _loaders;
        }
        public static function 
    get bytesLoaded ():Number {
            var 
    car 0;
            for (var 
    j:Number=0j<_loaders.lengthj++) {
                
    car += _loaders[j].getBytesLoaded();
            }
            return 
    car;
        }
        public static function 
    get bytesTotal ():Number {
            var 
    tot 0;
            for (var 
    j:Number=0j<_loaders.lengthj++) {
                
    tot += _loaders[j].getBytesTotal();
            }
            return 
    tot;
        }

    Si usa in questo modo:

    Codice PHP:
    var l:LoaderManager LoaderManager.getInstance();
    l.onLoadStart = function (t) {
        
    trace ("Load Started for "+t);
    }
    l.onLoadProgress = function (tblbt) {
        var 
    car LoaderManager.bytesLoaded;
        var 
    tot LoaderManager.bytesTotal;
        var 
    prc Math.floor((car/tot)*100);
        
    trace(prc+"% : "+car+" di "+tot);
    }
    l.onLoadComplete = function (t) {
        
    trace ("Load Completed for "+t);
    }
    l.onLoadInit = function (t) {
        
    trace ("MovieClip initialization for "+t);
    }
    l.onMultipleLoadComplete = function () {
        for (var 
    i=0i<LoaderManager.loaders.lengthi++) {
            
    LoaderManager.loaders[i]._x i*200;
        }
    }
    LoaderManager.addLoader(mc1"img1.jpg");
    LoaderManager.addLoader(mc2"img2.jpg");
    LoaderManager.addLoader(mc3"img3.jpg"); 

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 1999
    Messaggi
    57
    @eddie
    domani mattina lo provo e poi ti faccio sapere ... comunque grazie ;-)

    @and80
    ti ringrazio ... non ho avuto modo di provare domani testo il tutto ma ... da quello che vedo i vari clip me li posiziona sull'asse delle x di una misura fissa .. in questo caso 200px ...

    il mio problema è che ho sia immagini verticali sia orizzontali quindi lo scostamento non è fisso ma variabile in base alla larghezza della foto caricata.
    TomneT
    tomnet@tiscalinet.it


  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 1999
    Messaggi
    57
    @eddie
    tutto perfetto ... l'unica cosa è che ora devo mettere un loading sulle varie foto ... e utilizzando il createEmptyMovieClip e non duplicando un clip esistente non so come fare!!!

    ...ora mi ci metto ;-)
    TomneT
    tomnet@tiscalinet.it


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.