Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di pappolo
    Registrato dal
    Mar 2003
    Messaggi
    251

    Duplicate mc, andare a capo?

    salve, ho un bel problemino da sottoporvi

    Ho un mc quadrato che voglio si duplichi fino a formare una grigia per coprire una foto. Ogni quadrato è 50x42 pixel e neella foto devono andarci 8x8 quadratini.

    Riesco a duplicarlo in una riga impostando nel frame questa action (q è il nome di istanza del quadrato)

    for (i=0; i<8; i++) {
    lungox=_root.q._x+stepx;
    stepx=50*i;
    duplicateMovieClip("_root.q", "q"+i, i);
    _root['q'+i]._x= lungox+50;
    }

    Così i miei quadratini si duplicano tranquillamente e sono proprio 8, ora se voglio che dopo l'ottavo "vada a capo" e ne duplichi altre 8 volevo trasformarlo così:
    codice:
    for (i=0; i<16; i++) {
    	lungox=_root.q._x+stepx; 
    	lungoy=_root.q._y+stepy;
    	stepx=50*i;  //mi dice a che distanza dal primo posizionare il mc
    	duplicateMovieClip("_root.q", "q"+i, i);
    	_root['q'+i]._x= lungox+50; 
    	if (i>8) {
    		stepy=42;   //mi dice dove vanno piazzati i successivi 8 in altezza
    		_root['q'+i]._x= lungox-400;  //per tornare come _x al punto di partenza
    		_root['q'+i]._y= lungoy+42;
    		}
    	
    	}
    Però facendo così me ne mette 9 sulla prima riga, uno sulla seconda riga in posizione 2 e i restanti 6 in terza riga partendo dalla posizione lungo x giusta, cioè dalla terza.

    A me sembrava un così bello script


    Chi sa dirmi dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di pappolo
    Registrato dal
    Mar 2003
    Messaggi
    251
    chiedo scusa, ho corretto un pò, ora è così

    codice:
    for (i=0; i<15; i++) {
    	stepx=50*i;
    	x=_root.q._x+stepx; //mi dice a che distanza dal primo posizionare il mc
            y=_root.q._y;   	
            duplicateMovieClip("_root.q", "q"+i, i);
    	_root['q'+i]._x= x+50; 
    	if (i>8) {
    		
    	_root['q'+i]._x= x-450;  //per tornare come _x al punto di partenza
    		_root['q'+i]._y= y+42;   //setta la _y per la seconda linea
    		}
    	
    	}
    Ora va tutto bene, tranne che per il fatto che me ne crea 2 oltre la foto da coprire in prima riga mentre a quella di sotto mancano gli ultimi 2

  3. #3
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    codice:
    for (i = 0; i < 15; i++) {
    	stepx = 50 * i;
    	x = _root.q._x + stepx;
    	y = _root.q._y;
    	//mi dice a che distanza dal primo posizionare il mc
    	duplicateMovieClip("_root.q", "q" + i, i);
    	_root['q' + i]._x = x + 50;
    	if (i > 6) {
    		trace(i)
    		_root['q' + i]._x = x - 350;		//per tornare come _x al punto di partenza
    		_root['q' + i]._y = y + 42;			//setta la _y per la seconda linea
    	}
    }

  4. #4
    Utente di HTML.it L'avatar di pappolo
    Registrato dal
    Mar 2003
    Messaggi
    251
    grazie come al solito negatyve

    Logicamente funziona, ma mi sai dire che cosa sbagliavo?

  5. #5
    Utente di HTML.it L'avatar di pappolo
    Registrato dal
    Mar 2003
    Messaggi
    251
    non dirmelo
    Ho capito, sulla prima riga il primo è quello da duplicare e il secondo è quello con lo 0, quindi ce ne devono essere altri 6...

    Perchè io da solo non ci arrivo mai???

  6. #6
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    >quindi ce ne devono essere altri 6...

    :metallica

  7. #7
    Utente di HTML.it L'avatar di pappolo
    Registrato dal
    Mar 2003
    Messaggi
    251
    Giusto

    Solo una curiosità nega, facendo così mi esce uno script lunghissimo, praticamente uguale per ogni riga, salvo cambiare il ritorno indietro e l'altezza.

    C'è in flash un modo + rapido per fare tutte queste cose? uno script che possa raggruppare tutto?

    Forse potrei fare una funzione da associare al ciclo if andando a controllare solamente a che iterazione stiamo e settando una o 2 variabili per iterazione che mi calcolino il tutto... Prima che mi ci metto e che ci perda la testa, secondo te è fattibile?

  8. #8
    Utente di HTML.it L'avatar di pappolo
    Registrato dal
    Mar 2003
    Messaggi
    251
    Potrei fare uno script fatto così:

    codice:
    for (i = 0; i < 63; i++) {
    	stepx = 50 * i;
    	stepy = 42 * n;
    	n = 
    	x = _root.q._x + stepx;
    	y = _root.q._y; + stepy;
    	duplicateMovieClip("_root.q", "q" + i, i);
    	    _root['q' + i]._x = x - (350+(400*n);   //per tornare come _x al punto di partenza
    		_root['q' + i]._y = y + (42*n);	   //setta la _y per la seconda linea
    	}
    Devo solo trovare la funzione che mi dia la n, che fatto così deve essere = a 0 per i da 0 a 6, 1 per i da 7 a 14 e così via...
    Probabilmente mi conviene a questo punto fare una funzione e fare un ciclo if che mi setti la n a seconda della i...

  9. #9
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Non ho mica capito.. :)

  10. #10
    Utente di HTML.it L'avatar di pappolo
    Registrato dal
    Mar 2003
    Messaggi
    251
    codice:
    function copy() {
    	for (i = 0; i < 63; i++) {
    	stepx = 50 * i;
    	stepy = 42 * n;
    	x = _root.q._x + stepx;
    	y = _root.q._y; + stepy;
    	duplicateMovieClip("_root.q", "q" + i, i);
    	    _root['q' + i]._x = x - (350+(400*n));   //per tornare come _x al punto di partenza
    		_root['q' + i]._y = y + (42*n);	   //setta la _y	}
    }
    if (i < 6) {
    		n=0;
    		copy();
    	}
    	else if (i > 6) {
    		n=1;
    		copy();
    		}
    	else if (i > 14) {
    		n=3;
    		copy();
    	}
    	else if (i > 22) {
    		n=4;
    		copy();
           }
           else if (i > 30) {
    		n=5;
    		copy();
    	}
    	else if (i > 38) {
    	        n=6;
    	        copy();
    	}
    	else if (i > 46) {
    		n=7;
    		copy();
    	}
    	else if (i > 54) {
    		n=8;
    		copy();
    	}
    Ho fatto una cosa così, però non funziona:P

    Mi mette tutti e 63 i quadrati sulla stessa linea

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.