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

    Disporre immagini con duplicateMovieClip

    Ciao. Sto creando una galleria di immagini e ho scritto uno script che dovrebbe dispormi in fila delle immagini passate a flash trmite asp.

    codice:
    for (i=1; i<=totale; i++) {
    
    	if (i==1){
    		loadMovie (_root.eval(this["foto"+i], clip)
    	}else{
    		
    	duplicateMovieClip (clip, "clip"+i, i);
    	mc = this["clip"+i];
    	loadMovie (_root.eval(this["foto"+i]), mc);
    	mc._x = 110*i;
    	}
    }
    Dunque, "totale" è il numero di foto che ho, mentre
    _root.eval(this["foto"+i] richiama una variabile passata da ASP che contiene il nome del file jpg (le variabili hanno nome foto1, foto2, foto3...); clip è un movieclip vuoto sullo stage.

    Il problema è che mi si carica la prima immagine, ma la duplicazione sembra non funzionare. Qual'è l'errore? E, se non chiedo troppo, come posso andare a capo dopo che ho posizionato orizzontalmente le prime 4 immagini?

    Grazie!!

    P.S. uso flash 5!

  2. #2
    invece di...
    mc = this["clip"+i];

    prova così...
    mc = "clip"+i;

    Per la seconda domanda, dipende da quanto vuoi "distanziare" un'immagine dall'altra...
    mettiamo 10 pixel sia in orizzontale che in verticale, per cui avremo...
    codice:
    ix = 1;
    for (i=1; i<=totale; i++) {
         if (i==1){
    	loadMovie (_root.eval(this["foto"+i], clip)
         }else {
    	duplicateMovieClip (clip, "clip"+i, i);
    	mc = "clip"+i;
    	loadMovie (_root.eval(this["foto"+i]), mc);
    	mc._x += (mc._length+10)*(ix-1);
    	mc._y += (mc._height+10)*(ix-1);
         }
         ix++;
         if (ix>4) {ix=1};
    }

  3. #3
    Grazie 1000, Pasavign, per la risposta, ma purtroppo cambia poco o niente... anzi in realtà è esatamente uguale a prima!
    Ho fatto qualche modifica e correzione al codice anche se è tutto inutile:

    codice:
     
    ix = 1;
    for (i=1; i<=totale; i++){
         if (i==1){
    		loadMovie (this["foto"+i], clip);
         }else{
    	
    	duplicateMovieClip (clip, "clip"+i, i);
    	mc = "clip"+i;
    	loadMovie (this["foto"+i], mc);
    	mc._x += (mc._width+10)*(ix-1);
    	mc._y += (mc._height+10)*(ix-1);
         }
         ix++;
         if (ix>4) {ix=1};
    }
    Ho corretto _root.eval(this["foto"+i]) con this["foto"+i] e ora sono sicuro che la variabile viene caricata, però le immagini (a parte la prima) non mi si visualizzano!!

    Altri consigli? Sono 2 settimane che cerco di farlo funzionare!!

  4. #4
    dove hai inserito questo codice?
    E' in un frame della timeline principale oppure associato ad un movieclip, oppure dentro un frame di un movieclip?

  5. #5
    Originariamente inviato da Daniele87
    ... anzi in realtà è esatamente uguale a prima!
    tiro (quasi) ad indovinare nella speranza di aiutarti visto che sto cercando di adattare il pezzo di codice che hai postato (nel mio caso leggo i dati da un file xml).
    Visto che la funzione duplicatemovieclip restituisce un riferimento al movieclip duplicato non e' che bisogna fare qualcosa del genere es.
    codice:
    mc = clip.duplicateMovieClip (clip, "clip"+i, i);
    Saluti a tutti
    Riccardo

  6. #6
    Originariamente inviato da pasavign
    dove hai inserito questo codice?
    E' in un frame della timeline principale oppure associato ad un movieclip, oppure dentro un frame di un movieclip?
    Il codice è nella timeline principale.

    Grazie, riccardone, però se scrivo

    codice:
    mc = clip.duplicateMovieClip (clip, "clip"+i, i);
    indico due volte il tagret, no? Non credo funzioni...

    Invece ho provato a cambiare il codice:

    codice:
    ix = 0;
    for (i=1; i<=totale; i++){
         if (i==1){
    		loadMovie (this["foto"+i], clip);
         }else{
    	
    	duplicateMovieClip (clip, "clip"+i, i);
    	mc = this["clip"+i];
    	loadMovie (this["foto"+i], mc);
    	mc._x = (123+6)*ix+10
    	mc._y = (128+6)
    	//mc._x += (123+10)*(ix-1);
    	//mc._y += (128+10)*(ix-1);
         }
         ix++;
         if (ix>4) {
    		ix=0;
    		mc._x = 10
    		mc._y += 128+6;
    	}
    }
    Così mi compaiono ben 4 immagini ben allineate, e uno sotto la prima, ma le altre 3 non vogliono comparire...

    Se invece provo con quest'altro codice:

    codice:
     
    
    i=1
    
    	for (y=0; y<3; y++){
    
    		for (x=0; x<5; x++){
    
         		if (i==1){
    				loadMovie (this["foto"+i], clip);
         		}else{
    	
    				duplicateMovieClip (clip, "clip"+i, i);
    				mc = this["clip"+i];
    				loadMovie (this["foto"+i], mc);
    				mc._x = (123+6)*x+10
    				mc._y = (128+6)*y
    	
         		}
         
    		}
    
    		if (i>totale){
    		break;
    		}
    	i++
    	}
    ... me ne compaiono 3 sparse per la pagina...

    Uffa!!

  7. #7
    Hey, raga!! Ce l'ho fatta!!! Dopo prove e riprove ecco il codice esatto!!!

    codice:
     
    ix = 0;
    iy = 0;
    clip._x = 0
    clip._y = 0
    
    orizz = 4 //numero di colonne
    vert = 2 // numero di righe
    hight = 128 //altezza foto
    width = 123 //larghezza foto
    space = 6 //spaziatura tra foto
    
    for (i=1; i<=totale; i++){
         if (i==1){
    	loadMovie (this["foto"+i], clip);
         }else{
    	
    	duplicateMovieClip (clip, "clip"+i, i);
    	mc = this["clip"+i];
    	loadMovie (this["foto"+i], mc);
    	mc._x = (width+space)*ix
    	mc._y = (hight+space)*iy
    	}
         ix++;
    
         if (ix>=orizz) {
    		ix=0;
    		iy++;
    	}
    
    	if (i>=(orizz*vert)){
    	break;
    	}
    }
    Però ora ho un altro problema... Dovrei mettere un pulsante su cui cliccare per far scomparire le 4x3 foto che sono comparse e far comparire le successive 4x3... Come faccio??

  8. #8
    Originariamente inviato da Daniele87
    Hey, raga!! Ce l'ho fatta!!! Dopo prove e riprove ecco il codice esatto!!!
    Sono contento per te. Io sto provando ad utilizzare il tuo codice che mi sembra faccia al caso mio (la differenza oltre che nella fonte dati e' che avrei bisogno che le immagini fossero cliccabili) ma non riesco a visualizzare correttamente le immagini.
    Detro la variabile path ci metto il nome dell'immagine (che e' sempre diversa). Se al posto di "aaa" metto "clip"+i ne vedo solo una mentre cosi ne vedo due una sull'altra...
    codice:
    for (var i = 0; i<xmlObj.firstChild.childNodes.length; i++) {
    			var path:String = xmlObj.firstChild.childNodes[i].childNodes[5].childNodes;
    			if (i == 0) {
    				loadMovie(path, clip);				
    			} else {				
    				duplicateMovieClip(_level0.clip, "aaa", i); 			
    				mc = "aaa"; //this["clip"+i]; 
    				loadMovie(path, mc);				
    				mc._x = (width+space)*ix;
    				mc._y = (hight+space)*iy;				
    			}
    			ix++;
    			if (ix>=orizz) {
    				ix = 0;
    				iy++;
    			}
    			if (i>=(orizz*vert)) {
    				break;
    			}
    		}
    Saluti a tutti
    Riccardo

  9. #9
    Originariamente inviato da riccardone
    la differenza oltre che nella fonte dati e' che avrei bisogno che le immagini fossero cliccabili)
    In effetti anche io devo renderle cliccabili e fare in modo che si apra in una nuova finestra js l'immagine ingrandita, ma non ho ancora pensato a come fare... Una cosa per volta.
    Per ora devo risolvere come fare a caricare anche le successive immagini.
    Dunque ho modificato per l'ennesima volta il codice:

    codice:
    volte = 1
    
    orizz = 4 //numero di colonne
    vert = 2 // numero di righe
    hight = 128 //altezza foto
    width = 123 //larghezza foto
    space = 6 //spaziatura tra foto
    
    function tabella(inizio,pag){
    
    ix = 0;
    iy = 0;
    
    prima = inizio
    
    for (i=prima; i<=totale; i++){
         if (i==prima){
    		loadMovie (_root["foto"+i], _root.clip);
    		_root.clip._x = 0
    		_root.clip._y = 0
         }else{
    	
    	duplicateMovieClip (clip, "clip"+i, i);
    	mc = _root["clip"+i];
    	loadMovie (_root["foto"+i], mc);
    	mc._x = (width+space)*ix
    	mc._y = (hight+space)*iy
    	}
         ix++;
    
         if (ix>=orizz) {
    		ix=0;
    		iy++;
    	}
    
    	if (i>=(orizz*vert*pag)){
    	break;
    	}
    }
    
    }
    
    _root.onLoad = tabella(1,1)
    E fin qua funziona. Ora ho messo un pulsante e gli ho associato il seguente:
    codice:
    on (release) {
    	volte++
    	tabella((orizz*vert*volte+1),volte)
    }
    In teoria dovrebbe aumentare "volte" di 1 (così so che è la seconda videata di immagini) e passare alla funzione il numero della nuova prima immagine della sequenza che è formato dal numero totale di quelle della videata prima (orizz*vert) per il numero di facciate precedenti, più uno.

    Il risultato è che, invece di cambiarmi tutte le immagini, mi cambia solo la prima con la 17esima immagine invece che con la 9° e le altre le lascia come nella prima sequenza!!! Perchè???

    P.S.
    mi dispiace, riccardone, ma non so come aiutarti... Non ci capisco molto nel tuo codice... ho appena iniziato ad avvicinarmi agli AS

  10. #10
    mi dispiace, riccardone, ma non so come aiutarti... Non ci capisco molto nel tuo codice... ho appena iniziato ad avvicinarmi agli AS
    No problem... non sono ancora riuscito a trovare un tutorial su come creare tanti bottoni (e aggiungerli al filmato) per quanti elementi/pathimmagine ci sono in un file xml. Mi sembra una necessita' abbastanza frequente quindi credo che sia io a non cercare bene. Se tu o altri sapete consigliarmi un tutorial sull'argomento ben venga.
    Saluti a tutti
    Riccardo

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.