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?
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?
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 } }
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...
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); } }
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);
}
}
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
quando sei nell'azione del clip (all'interno) devi riferirti a lui con this
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.ncodice: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); } }
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
ps, il codice vā solo ed esclusivamente su timelinecodice: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](); } }
sono commossograzie 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 2VVoVe:
ma ora č tutto finito![]()
grassie grassie
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
prova modificare
statusOff(_root.menu.nomi, this.menu.n);
in
_parent.statusOff(_root.menu.nomi, this.n);