Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di klauzz
    Registrato dal
    Jul 2001
    Messaggi
    303

    menu con duplicate e Array

    raga,

    sto creando un menu, ma devo impostarlo in modo che si possa espandere dinamicamente.

    Ho creato un mc (voice), dentro al quale c'è il campo di testo dinamico (field) e vari elementi di grafica.

    Vorrei duplicarlo con duplicateMovieClip tante volte quanti sono gli elementi dell'Array (allfields)

    Non vorrei tirarvi troppo matti.
    C'è un tutorial o una guida per far questo? Qualche link...?

    Grazie a tutti

  2. #2
    Magari puoi incominciare così:

    istanzi il clip "movieclip1"

    movarray = new Array (10);
    movarray[0] = "movieclip1";
    //ne duplica 10
    for (i = 2; i <= 10; ++i) {
    duplicateMovieClip ("movieclip1", "movieclip" + i, i);
    this["movieclip" + i]._y += (movieclip1._height * (i - 1));
    }

    ciao

  3. #3
    Utente di HTML.it L'avatar di klauzz
    Registrato dal
    Jul 2001
    Messaggi
    303
    grazie Action Slip!!!

    Ho lavorato sul tuo code, ma non riesco a far funzionare i links.
    Dove sbaglio? Datemi una mano...

    codice:
    // spacer for buttons
    s = 0;
    // array for dinamic fields
    var field = new Array(n);
    field[0] = "1";
    field[1] = "2";
    field[2] = "3";
    //number of elements of field array
    n = field.length;
    //
    var link = new Array(n);
    link[0] = "http://www.html.it";
    link[1] = "http://www.flash-mx.it";
    link[2] = "http://www.flashkit.com";
    //
    movarray = new Array(n);
    movarray[0] = "movieclip1";
    for (i=2; i<=n; ++i) {
    	duplicateMovieClip("movieclip1", "movieclip"+i, i);
    	_root["movieclip"+i]._y += (((movieclip1._height)+s)*(i-1));
    	_root.movieclip1.field = field[0];
    	_root["movieclip"+i].field = field[i-1];
    	_root.movieclip1.onPress = function() {
    		getURL(link[0], "_BLANK");
    	};
    	_root["movieclip"+i].onPress = function() {
    		getURL(link[i-1], "_BLANK");
    	};
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037
    prova cosi:
    codice:
    s = 0;
    // array for dinamic fields
    var field = new Array();
    field[0] = "1";
    field[1] = "2";
    field[2] = "3";
    //
    var link = new Array();
    link[0] = "http://www.html.it";
    link[1] = "http://www.flash-mx.it";
    link[2] = "http://www.flashkit.com";
    //
    movarray = new Array();
    movarray[0] = "movieclip1";
    for (i=2; i<=field.length; ++i)
    {
    	duplicateMovieClip("movieclip1", "movieclip"+i, i);
    	_root["movieclip"+i]._y += (((movieclip1._height)+s)*(i-1));
    	_root["movieclip"+i].field = field[i-1];
    	_root["movieclip"+i].onPress = function()
    	{
    		getURL(link[i-1], "_blank");
    	};
    }
    // basta assegnare 1 volta sola ///////////
    _root.movieclip1.field = field[0];
    _root.movieclip1.onPress = function()
    {
    	getURL(link[0], "_blank");
    };

  5. #5
    Utente di HTML.it L'avatar di klauzz
    Registrato dal
    Jul 2001
    Messaggi
    303
    Hai ragione polliotto... l'ultima parte di codice è scorretto inserirla nel ciclo for.
    Però non riesco a far funzionare ancora i links dei buttons duplicati.
    Il primo funziona perchè è al di fuori dal ciclo, ma gli altri 2 mi linkano al desktop!!!
    Puoi fare un check?

    Thanxxx4Support

  6. #6
    Prova ad aggiungere questo:

    _root.movieclip1.field = field[0];
    _root.movieclip1.onPress = function () {
    getURL (link[0], "_blank");
    };
    _root.movieclip2.field = field[1];
    _root.movieclip2.onPress = function () {
    getURL (link[1], "_blank");
    };
    _root.movieclip3.field = field[2];
    _root.movieclip3.onPress = function () {
    getURL (link[2], "_blank");
    };

    non credo sia la soluzione ottimale ma almeno funziona.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037
    ops mi è scappato di vista:
    codice:
    _root["movieclip"+i].onPress = function()
    	{
    		getURL(_root.link[Number(this.field)], "_blank");
    	};

  8. #8
    Utente di HTML.it L'avatar di klauzz
    Registrato dal
    Jul 2001
    Messaggi
    303
    grazie polliotto!

    Ho aggiunto un -1 per far coincidere i links.

    Considerando che il mio "movieclip1" non si trova sulla root, è corretto scrivere il tutto così?

    codice:
    s = 0;
    // array for dinamic fields
    var field = new Array();
    field[0] = "1";
    field[1] = "2";
    field[2] = "3";
    //
    var link = new Array();
    link[0] = "http://www.html.it";
    link[1] = "http://www.flash-mx.it";
    link[2] = "http://www.flashkit.com";
    //
    movarray = new Array();
    movarray[0] = "movieclip1";
    for (i=2; i<=field.length; ++i) {
    	duplicateMovieClip("_root.one.movieclip1", "movieclip"+i, i);
    	eval("one.movieclip"+i)._y += (((one.movieclip1._height)+s)*(i-1));
    	eval("one.movieclip"+i).field = field[i-1];
    	eval("one.movieclip"+i).onPress = function() {
    		getURL(_root.link[Number(this.field)-1], "_blank");
    	};
    }
    // basta assegnare 1 volta sola ///////////
    _root.one.movieclip1.field = field[0];
    _root.one.movieclip1.onPress = function() {
    	getURL(link[0], "_blank");
    };
    Thanxxx4support

  9. #9
    Utente di HTML.it L'avatar di klauzz
    Registrato dal
    Jul 2001
    Messaggi
    303
    ragazzi, ho bisogno di aiuto per risolvere alcuni problemi.

    Il primo è quello che chiedevo nel mio post precedente.
    E' giusto usare "eval" per far funzionare il code con il clip da duplicare che si trovi non nella root, ma dentro altri clip? (Nel mess precedente ho scritto il code con eval, ma non so se sia giusto o sbagliato). C'è un altro modo?

    Ma i problemi non vengon mai da soli :

    mettete il caso che all'interno del mio movieclip1 io abbia un clip di nome "flag" e che voglia che quando passo on rollover sul movieclip1, mi compaia il mc flag.

    All'interno del ciclo FOR ho quindi scritto questo code:

    codice:
    //setto tutti i flag con alfa a 0
    eval("one.movieclip"+i).flag._alpha = 0;
    	
    	//imposto il rollover per portarmi l'alfa a 100
    	eval("one.movieclip"+i).onRollOver = function() {
    eval("one.movieclip"+i).onEnterFrame = function(){
    		eval("one.movieclip"+i).flag._alpha = 100;
    }
    }
    come mai non mi funziaaa?

    vi posto il FLA per praticità.

    Thanxxx

  10. #10
    Utente di HTML.it L'avatar di klauzz
    Registrato dal
    Jul 2001
    Messaggi
    303
    up...

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.