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

    posizionare thumbs alla stessa distanza, ma....

    Ciao come da titolo il mio problema e' il seguente:
    ho delle thumbs da caricare in uno slide mosso dal mouse e fin qui tutto ok, le immagini sono impostate alla stessa altezza, la larghezza e' il parametro che "VARIA".

    come potete vedere qui:

    esempio

    lasciate perdere la sgranatura, ecc....
    le foto hanno tutte la stessa altezza e non sono "strecchate" o "deformate" ma mantengono le proporzioni, quindi data per fissa l'altezza cambia la larghezza.

    all'inizio dello script ho una variabile che e' : lar = 80, e questo viene passato come valore per stabilire la distanza tra le varie thumbs, pero' come vedete l'effetto che ottengo e' che si le immagini sono distanziate tutte di 80px, ma avendo alcune foto larghezza inferiore alle altre lo spazio tra una foto e l'atra e' maggiore.

    come posso posizionare tutte le thumbs alla medesima distanza pur con larghezze differenti?

    aspetto lumi........

    ciao e grazie a tutti........
    -Nextart.it Graphic Solutions

  2. #2
    posizioni pic1
    pic2 sarà posizionata a pic1._x + 80 - (80-pic2._width)/2

    fatto così al volo ma dovrebbe funzionare, poi ovvio che dipende anche da come hai sviluppato il codice.


  3. #3
    ci provo... grazie e ti/vi faccio sapere.....

    :-)
    -Nextart.it Graphic Solutions

  4. #4
    Per trovare la posizione della pic n basta che fai (pic._x + pic._width + 80) su pic n-1

    Il problema è che non sai quanto è larga pic n-1 finchè non l'hai caricata tutta. Quindi o prima carichi tutte le foto e poi le mostri insieme o in sequenza o come ti pare. O aggiusti le posizioni mano a mano che le foto si caricano e quindi vedi ste foto che si muovono sull'asse x.
    O, se puoi, ti passi il parametro delle dimensioni lato server, così calcoli su quello e vuoi.

  5. #5
    ok, ma.......
    cosi' creo la barra con le img lette da xml e le posiziono tutte a distanza = 70.
    e PURTROPPO l'effetto e' quello segnalato.

    quindi VI CHIEDO dove mettere :
    Per trovare la posizione della pic n basta che fai (pic._x + pic._width + 80) su pic n-1


    codice:
    var slideShow:Function = function (array:Array) {
    	var lar = 70;
    	var alt = 10;
    	fattore = 50;// fattore di movimento
    	// crea la prima barra contenitore
    	var bar1 = this.createEmptyMovieClip("barra1", 1);
    	bar1._x = Stage.width/2+135;// posiziona la barra al centro dello stage
    	barra1._y = 10;
    	var barw = array.length*lar;
    	var x = -(barw)/2;// determina la larghezza delle barre
    	//trova la posizione del primo movieclip
    	for (var i = 0; i<array.length; i++) {
    		var mc = bar1.createEmptyMovieClip("img"+i, i);
    		// ---------------------
    		mc.createEmptyMovieClip("pic", 1);
    		mc.pic.loadMovie("portfolio/th/"+array[i].image);
    		trace("sto caricando thumbs BARRA_1 "+array[i].image);
    		mc.pic._alpha = 60;
    		mc.onEnterFrame = function() {
    			car = this.pic.getBytesLoaded();
    			tot = this.pic.getBytesTotal();
    			if (car == tot && car>1024) {
    				trace("foto thumbs caricata");
    				AdattaImg(this.pic, 100, 50);
    				trace("larghezza = "+  this._width);
    //qui ho la larghezza dell'immagine caricata 
    				var mir:Mirror = new Mirror(this, 0, 50, 50);
    				delete this.onEnterFrame;
    			}
    		};// fine enterFrame
    		mc._x = x+(lar*i);
    }
    }
    -Nextart.it Graphic Solutions

  6. #6
    non va bene in quel modo perchè la riga

    mc._x = x+(lar*i); (che è quella che dovremmo modificare)

    viene eseguita prima
    trace("larghezza = "+ this._width);

    Dovresti fare una cosa del genere (se non è possibile farsi passare la largheza da xml che sarebbe più facile).
    Prima carichi tutti le immagini e controlli che siano state caricate. (Magari metti a true una variabile "caricata" nella foto). Ah se invece di usare loadMovie usi l'oggetto MovieClipLoader puoi usare i listener per sapere se la foto è caricata invece di fare il ciclo sui frame.
    Quando tutte le variabili sono a true fai lanciare una funzione tipo posizionaFoto()

    Poi la scriviamo insieme semmai ^^

  7. #7
    grazie Stan ....allora ho estratto dal progetto solo la parte della barra delle thumbs cosi' e' piu' chiaro......
    ho utilizzato MovieClipLoader e il codice e' questo:
    ho commentato il vecchio metodo, con il nuovo, mi sballa anche il riflesso che do alle img eppure il codice e' lo stesso:

    var mir:Mirror = new Mirror(target, 0, 50, 50);


    a parte il riflesso no riesco a capire come prendere salvarre la pos e dist dell'img precedente....
    codice:
    import mx.transitions.*;
    import mx.transitions.easing.*;
    
    
    //locale
    var xmlUrl:String = "immagini.xml";
    //online
    //var xmlUrl:String = "immagini.xml?rnd=" + random(999999);
    var parseArray:Array = new Array();
    var parseXML:XML = new XML();
    parseXML.ignoreWhite = true;
    parseXML.onLoad = function(success:Boolean):Void  {
    	if (this.loaded) {
    		var temp:Array = this.firstChild.childNodes;
    		for (var i = 0; i<temp.length; i++) {
    			parseArray.push({image:temp[i].childNodes[0].firstChild.toString(), caption:temp[i].childNodes[1].firstChild.toString()});
    		}
    		slideShow(parseArray);
    	}
    };
    parseXML.load(xmlUrl);
    
    var slideShow:Function = function (array:Array) {
    	var lar = 90;
    	var alt = 10;
    	fattore = 50;// fattore di movimento
    	// crea la prima barra contenitore
    	var bar1 = this.createEmptyMovieClip("barra1", 1);
    	bar1._x = Stage.width/2+135;// posiziona la barra al centro dello stage
    	barra1._y = 10;
    	var barw = array.length*lar;
    	var x = -(barw)/2;// determina la larghezza delle barre
    	//trova la posizione del primo movieclip
    	for (var i = 0; i<array.length; i++) {
    		var mc = bar1.createEmptyMovieClip("img"+i, i);
    		// ---------------------
    		mc.createEmptyMovieClip("pic", 1);
    		//mc.pic.loadMovie("portfolio/th/"+array[i].image);
    		//trace("sto caricando thumbs BARRA_1 "+array[i].image);
    		mc.pic._alpha = 60;
    		
    		 vecchio metodo 
    		/*mc.onEnterFrame = function() {
    			car = this.pic.getBytesLoaded();
    			tot = this.pic.getBytesTotal();
    			if (car == tot && car>1024) {
    				trace("foto thumbs caricata");
    				AdattaImg(this.pic, 100, 70);
    				trace("larghezza = "+  i);
    				var mir:Mirror = new Mirror(this, 0, 50, 50);
    				delete this.onEnterFrame;
    			}
    		};// fine enterFrame
    		*/
    	
    		var mcLoad:MovieClipLoader = new MovieClipLoader();
    			var mcList:Object = new Object();
    			mcList.onLoadInit = function(target) {
    				trace("foto thumbs caricata :"+array[i].image);
    				AdattaImg(target, 100, 50);
    				target._alpha=60;
    				var mir:Mirror = new Mirror(target, 0, 50, 50);
    				trace("larg= "+ target._width+" x: "+target._x);
    			};
    			mcLoad.addListener(mcList);
    		mcLoad.loadClip("portfolio/th/"+array[i].image+"", mc.pic);
    		
    		mc._x = x+(lar*i);
    	}// fine FOR
    	
    	
    	// imposta lo script per la rotazione
    	var cx = bar1._x;
    	var lx = barw;
    	var dx = cx+lx;
    	var sx = cx-lx;
    	this.onMouseMove = function() {
    		this.posx = this._xmouse;
    	};
    	this.onEnterFrame = function() {
    		mx1 = Math.round(this.posx-cx)*-1;
    		mx1 = Math.round(mx1/fattore);
    		bar1._x += mx1;
    		
    		var bar1X = bar1._x;
    		
    		if (bar1X<sx) {
    			bar1._x = bar2X+lx;
    		}
    		if (bar2X<sx) {
    			bar2._x = bar1X+lx;
    		}
    		if (bar1X>dx) {
    			bar1._x = bar2X-lx;
    		}
    		if (bar2X>dx) {
    			bar2._x = bar1X-lx;
    		}
    	};
    }

    -Nextart.it Graphic Solutions

  8. #8
    per la questione mirror non so ^^ forse dipende dal punto di ancoraggio

    codice:
    		var mcLoad:MovieClipLoader = new MovieClipLoader();
    			var mcList:Object = new Object();
    			mcList.onLoadInit = function(target) {
    				trace("foto thumbs caricata :"+array[i].image);
    				AdattaImg(target, 100, 50);
    				target._alpha=60;
                                    target.caricata=true
                                    target._visible=false
    				var mir:Mirror = new Mirror(target, 0, 50, 50);
    				trace("larg= "+ target._width+" x: "+target._x);
    			};
    			mcLoad.addListener(mcList);
    		mcLoad.loadClip("portfolio/th/"+array[i].image+"", mc.pic);
    sotto il for metterei questo
    codice:
    this.onEnterFrame=function(){
            this.tuttocaricato=true
    	for (var i = 0; i<array.length; i++) {
                 if (!bar1["img"+i].carito){
                     this.tuttocaricato=false
                 }
            }
            if (this.tuttocaricato){
                delete this.onEnterFrame
                lanciaImmagini()
            }
    }
    codice:
    function lanciaImmagini(){
       trace("lancio")
       for (var i = 0; i<array.length; i++) {
           bar1["img"+i]._visible=true
           //qua posizioneremo la x  
       }
    }
    Intanto vedi se va ^^

  9. #9
    ok, thumbs caricate, ovviamente una sopra l'altra......
    -Nextart.it Graphic Solutions

  10. #10
    codice:
    function lanciaImmagini(){
       var spazio:Number = 80
       for (var i = 0; i<array.length; i++) {
           bar1["img"+i]._visible=true
           if (i>0){
            bar1["img"+i]._x=bar1["img"+(i-1)]._x+bar1["img"+(i-1)]._width + spazio
           }
       }
    }

    (volendo si può togliere l'if i>0 nel primo caso bar1["imga+(i-1)] darà undefined annullando tutta la riga mi sa)

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.