Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    9

    Ricavare dimensione immagini in actionscript 3

    ciao a tutti,
    qualcuno sa se in actionscript 3 c'è un modo per ricavare la dimensione delle immagini che gli vengono passate da file xml?

    Io ho creato un gallery in flash che carica le immagini da un file xml, il problema però è che le immagini hanno dimensioni diverse e io non riesco a ricavarle. Se assegno un valore uguale per tutte ovviamente alcune risultano troppo piccole e altre rimangono comunque molto grandi.. qualcuno sa cosa posso usare?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Le dimensioni delle immagini le puoi ricavare solo una volta che la singola immagine è stata caricata:

    codice:
    var url:String = 'indirizzo_immagine.jpg';
    var loader:Loader = new Loader();
    
    loader.contentLoaderInfo.addEventListener( Event.COMPLETE, loaderComplete, false, 0, true );
    loader.load( new URLRequest( url ) );
    function loaderComplete( event:Event ):void
    {
    	loader.contentLoaderInfo.removeEventListener( Event.COMPLETE, loaderComplete, false );
    	// ora sai le dimensioni
    	trace( loader.width, 'x', loader.height );
    	// se vuoi, visualizzi l'immagine
    	addChild( loader );
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    9
    grazie mille per aver risposto negatyve

    io però le immagini le carico da un xml, cioè:

    codice:
    thumb = new XML();
    thumb.ignoreWhite = true;
    thumb.load("dati.xml");         // qui inserire il percorso al file .XML
    thumb.onLoad = function() {
    root = this.firstChild;
    [...]
    dopo apro un ciclo for e dentro e tra le varie cose carico le immagini

    codice:
    for (i=0; i<total; i++) {
    
    var image = root.childNodes[i].childNodes[0].firstChild.nodeValue;
    
    }
    
    [...]
    } //chiudo la funzione thumb
    quindi come faccio ad usare il metodo che hai detto tu?

    Scusami, ma sono un po alle prime armi in actionscript u.u
    grazie ancora

  4. #4
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Un attimo, tramite il caricamento dei dati hai solo recuperato l'indirizzo dell'immagine, e ovviamente questa informazione non ti basta a dedurne le dimensioni. Solo quando carichi l'immagine puoi scoprirle:

    codice:
    for (i=0; i<total; i++) {
    // a questo punto hai recuperato l'indirizzo dell'immagine
    // quand'è che la carichi?
    var image = root.childNodes[i].childNodes[0].firstChild.nodeValue;
    
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    9
    si scusa.. ti ho saltato un po di codice..

    codice:
    //tutto dentro il for
    [...]
    newThumb = thumbnailer.container.duplicateMovieClip("container"+i, i);
    [...]
    
    var image = root.childNodes[i].childNodes[0].firstChild.nodeValue; 
    var image1 = root.childNodes[0].childNodes[0].firstChild.nodeValue; 
    
    loadMovie(image1, _root.box.foto_effetto); //carico solo la prima immagine
    
    [...] //qualcosa che mi restituisca le  dimensioni dell'immagine, anche se qui vale solo
          //per la prima che viene caricata
    
    newThumb.onRelease();
    newThumb.cont.loadMovie(image);		// carico le thumbs
    newThumb.cont._xscale = 15;		// scalo la larghezza
    newThumb.cont._yscale = 15; 		// scalo l'altezza
    
    newThumb.onRelease = function() {
    			
    loadMovie(this.image, _root.box.foto_effetto); // carico l'immagine nel clip effetto 			
    _root.box.play(); // avvio il box
    
    [...] //qualcosa che mi restituisca le dimensioni dell'immagine, quindi..
    
    //img_width = ?
    //img_height = ?
    
    }; //chiudo funzione newThumb
    quindi uso loadMovie..

  6. #6
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    In realtà, non stai usando as3, bensì as2. Purtroppo vado a memoria, quindi fai le opportune verifiche:

    codice:
    {
    	newThumb = thumbnailer.container.duplicateMovieClip("container"+i, i);
    	var image = root.childNodes[i].childNodes[0].firstChild.nodeValue; 
    	var image1 = root.childNodes[0].childNodes[0].firstChild.nodeValue; 
    	
    	loadMovie(image1, _root.box.foto_effetto); //carico solo la prima immagine
    
    
    	newThumb.onRelease();
    	newThumb.cont.loadMovie(image);		// carico le thumbs
    	newThumb.cont._xscale = 15;		// scalo la larghezza
    	newThumb.cont._yscale = 15; 		// scalo l'altezza
    
    	newThumb.onRelease = function()
    	{
    		// se il movieclip inner esiste già
    		if ( _root.box.foto_effetto.inner != undefined )
    		{
    			// lo rimuovi
    			_root.box.foto_effetto.inner.removeMovieClip();
    		}
    		// crei un movieclip vuoto dentro foto_effetto
    		var mc = _root.box.foto_effetto.createEmptyMovieClip( 'inner', 1 );
    		// nascondi il movieclip
    		mc._alpha = 0;
    		// carichi l'immagine nel movieclip vuoto
    		mc.loadMovie( this.image );
    		// avvio il box
    		_root.box.play();
    		// a questo punto ancora NON PUOI SAPERE le dimensioni dell'immagine
    		// devi verificarne il caricamento
    		// associ una funzione all'evento enterFrame del movieclip che contiene "inner"
    		_root.box.foto_effetto.onEnterFrame = function()
    		{
    			// recuperi i bytes caricati
    			var l = this.inner.getBytesLoaded();
    			// recuperi i bytes totali
    			var t = this.inner.getBytesTotal();
    			// se i caricati sono almeno quanto i totali
    			if ( l >= t )
    			{
    				// adesso l'immagine è caricata, puoi verificare le dimensioni
    				var img_width = this.inner._width;
    				var img_height = this.inner._height;				
    			}
    		}
    	}
    }

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.