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