All’inizio avevo il problema di assegnare runtime il codice a 16 istanze pulsante facendo in modo che ognuna abbia lo stesso codice ma richiami un’immagine diversa:
Scrivendo in questo modo non funzionava (in pratica tutte le istanze ricevevano lo stesso codice che richiamava l’immagine con l’ultimo valore assunto da index cioè 17)
for (index=1; index<=16; index++) {
var prevn = "prev"+index;
_root[prevn].onPress = function() {
_root.showPic(index);
};
}
Dopo alcune prove scrivendo in questo modo la cosa ha funzionato:
DefPic = function (numPic, ClipName) {
// funzione di assegnazione del codice delle singole istanze
ClipName.onPress = function() {
// richiama la funzione di visualizzazione passando l'indice dell'immagine
_root.showPic(numPic);
};
};
for (index=1; index<=16; index++) {
//Assegna il codice alle istanze dei pulsanti
var prevn = "prev"+index;
DefPic(index, this[prevn]);
}
Ora, siccome le istanze dei pulsanti sono dei semplici quadrati mi sono detto, perché non provare a disegnare direttamente anche i pulsanti. E così ho fatto questo(il ciclo for è momentaneamente a 1 perché altrimenti avrei 16 istanze una sopra l’altra).
DefPic = function (numPic, ClipName) {
// funzione di assegnazione del codice delle singole istanze
ClipName.onPress = function() {
// richiama la funzione di visualizzazione passando l'indice dell'immagine
_root.showPic(numPic);
};
};
for (index=1; index<=1; index++) {
//Assegna il codice alle istanze dei pulsanti
var prevn = "prev"+index;
createEmptyMovieClip(prevn, index);
with (prevn) {
lineStyle(1, 0x666666, 100);
beginFill(0x888888, 50);
moveTo(0, 0);
lineTo(100, 0);
lineTo(100, 30);
lineTo(0, 30);
lineTo(0, 0);
}
DefPic(index, this[prevn]);
}
L’assegnazione del codice in questo caso non avviene perché? Per caso anche in questo caso è sufficiente fare una funzione esterna richiamata dal cliclo for? Il codice è scritto correttamente ho tutto funziona per pura fortuna? Ogni suggerimento è bene accetto ma siate chiari perché non sono un programmatore puro’
Grazie

Rispondi quotando