Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    121

    menu in flash con "memoria"

    dato il classico menų composto dal nome dei pulsanti la necessitā č la seguente:

    on rollover cambia colore
    on rollout torna al colore normale
    on click cambia colore per segnalare il link attivo e gli altri tornano al colore originale

    voi come fate?

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    con un array, un ciclo for e un paio di funzioni

    ad esempio
    codice:
    var nomi = new Array("home", "chi", "dove", "quando", "contatti");
    for(n=0;n<nomi.length;n++){
    	path = _root[nomi[n]];
    	path.onRollover = function(){
    		// azioni per rollover
    	}
    	path.onRollOut = function(){
    		// azioni per rollout
    	}
    }

  3. #3
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    121
    ok ma per fare in modo che quando č cliccato rimanga del colore che ha quando č onrollover e tutti gli altri no?

    č quallo il punto che mi sta a cuore...

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ho sgarrato una cosa, quello che hai visto conviene farlo con i MovieClip e non con i Button

    quindi nel tuo movieclip mettiamo che hai due frame entrambi stoppati, che assumono i due "stati"

    usi una funzione che blocca il pulsante utilizzato e lo manda al frame 2 (quello dello stato cliccato) e gli altri al primo frame e la alimenti sempre con lo stesso array

    codice:
    var statusOff = function(arr, n){
    	for(i=0; i<arr.length; i++){
    		path = _root[arr[i]];
    		if(i!=n){
    			path.enabled = true;
    			path.gotoAndStop(1);
    		} else {
    			path.enabled = false;
    			path.gotoAndStop(2);			
    		}
    	}
    }
    var nomi = new Array("home", "chi", "dove", "quando", "contatti");
    for(n=0;n<nomi.length;n++){
    	path = _root[nomi[n]];
    	path.n = n;
    	path.onRollover = function(){
    		// azioni per rollover
    	}
    	path.onRollOut = function(){
    		// azioni per rollout
    	}
    	path.onRelease = function(){
    		_root.statusOff(_root.nomi, this.n);
    	}
    }

  5. #5
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    121
    il click mi funzia ma il rollover rollout no mi rolla sempre e solo l'ultimo, oi il tuo script l'ho messo nella timeline:

    var statusOff = function(arr, n){
    for(i=0; i<arr.length; i++){
    path = _root[arr[i]];
    if(i!=n){
    path.enabled = true;
    path.gotoAndStop(1);
    } else {
    path.enabled = false;
    path.gotoAndStop(2);
    }
    }
    }
    var nomi = new Array("a", "b", "c", "d", "e");
    for(n=0;n<nomi.length;n++){
    path = _root[nomi[n]];
    path.n = n;
    path.onRollOver = function(){
    path.gotoAndStop(2);trace(path);
    }
    path.onRollOut = function(){
    path.gotoAndStop(1);
    }
    path.onRelease = function(){
    _root.statusOff(_root.nomi, this.n);
    }
    }

  6. #6
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    121
    inoltre non mi č ben chiaro come associare ad ogni pulsante/movie una azione distinta..

    il tuo script vā nella timeline o sul pulsante/movie?

    grazie

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    quando sei nell'azione del clip (all'interno) devi riferirti a lui con this

    codice:
    var statusOff = function(arr, n){
    	for(i=0; i<arr.length; i++){
    		path = _root[arr[i]];
    		if(i!=n){
    			path.enabled = true;
    			path.gotoAndStop(1);
    		} else {
    			path.enabled = false;
    			path.gotoAndStop(2);
    		}
    	}
    }
    var nomi = new Array("a", "b", "c", "d", "e");
    for(n=0;n<nomi.length;n++){
    	path = _root[nomi[n]];
    	path.n = n;
    	path.onRollOver = function(){
    		this.gotoAndStop(2);
    		trace(this);
    	}
    	path.onRollOut = function(){
    		this.gotoAndStop(1);
    	}
    	path.onRelease = function(){
    		_root.statusOff(_root.nomi, this.n);
    	}
    }
    quando entri nelle azioni č come se uscissi da ciclo, perciō riferendoti a path ti riferisci sempre a _root[nomi[nomi.length-1]] ossia all'ultimo clip della lista nell'array, per riferirti invece all'interno del ciclo al clip che sta eseguendo in quel momento l'azione, basta un "trucchetto" ossia quel path.n = n che dā il numero di riferimento "n" al clip stesso e puō essere richiamato dall'interno con this.n

    per quanto riguarda la possibilitā di dare comandi diversi, potresti racchiudere i comandi in funzioni separate e poi richiamarli allo stesso modo nell'onRelease del ciclo, ad esempio
    codice:
    var function_a = function(){
    // azioni
    }
    var function_b = function(){
    // azioni
    }
    // ecc....
    var statusOff = function(arr, n){
    	for(i=0; i<arr.length; i++){
    		path = _root[arr[i]];
    		if(i!=n){
    			path.enabled = true;
    			path.gotoAndStop(1);
    		} else {
    			path.enabled = false;
    			path.gotoAndStop(2);
    		}
    	}
    }
    var nomi = new Array("a", "b", "c", "d", "e");
    for(n=0;n<nomi.length;n++){
    	path = _root[nomi[n]];
    	path.n = n;
    	path.onRollOver = function(){
    		this.gotoAndStop(2);
    		trace(this);
    	}
    	path.onRollOut = function(){
    		this.gotoAndStop(1);
    	}
    	path.onRelease = function(){
    		_root.statusOff(_root.nomi, this.n);
    		_root["function_"+this._name]();
    	}
    }
    ps, il codice vā solo ed esclusivamente su timeline

  8. #8
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    121
    sono commosso grazie mille

    funzia alla grande, pensa che fino ad adesso io mettevo ad ogni pulsante l'ordine di resettare tutti gli altri tranne stesso, pensa quando ne hai 50 e ti chiedono di aggiungerne tre o toglierne 2 VVoVe:

    ma ora č tutto finito

    grassie grassie

  9. #9
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    121
    ti chiedo ancora una cosa :

    sto usando il tuo script in un movie che viene importano dentro un movie principale, il cambio rollovewr rollout vā alla grande (ho cambiato i targets) ma non riesco a far andare il fatto del click attivo, ecco il mio scritp:

    var statusOff = function(arr, n){
    for(i=0; i<arr.length; i++){
    path = [arr[i]];
    if(i!=n){
    path.enabled = true;
    path.gotoAndStop(1);
    } else {
    path.enabled = false;
    path.gotoAndStop(2);
    }
    }
    }
    var nomi = new Array("collezioni", "tavoli", "sedute", "complementi");
    for(n=0;n<nomi.length;n++){
    path = _root.menu[nomi[n]];
    path.n = n;
    path.onRollOver = function(){
    this.gotoAndStop(2);
    }
    path.onRollOut = function(){
    this.gotoAndStop(1);
    }
    path.onRelease = function(){
    statusOff(_root.menu.nomi, this.menu.n);
    _root.menu["function_"+this._name]();
    }
    }

    /////////funzioni puls
    var function_collezioni = function(){
    trace("collezioni");
    }
    var function_tavoli = function(){
    trace("tavoli");
    }
    var function_sedute = function(){
    trace("sedute");
    }
    var function_complementi = function(){
    trace("complementi");
    }



    puoi aiutarmi?

    grazie

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    prova modificare

    statusOff(_root.menu.nomi, this.menu.n);

    in

    _parent.statusOff(_root.menu.nomi, this.n);

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.