evito giri di parole inutili. ti posto il codice:
scritto nella _root.
codice:
// Definizione degli array: Associazioni, Testi degli oggetti, Testi dei target, Risultato.
_global.assoc = new Array(0, 1, 3, 4, 2);
_global.drop_txt = new Array("drop1", "drop2", "drop3", "drop4", "drop5");
_global.drag_txt = new Array("1", "2", "4", "5", "3");
_global.result = new Array(assoc.length);
// Inizializzazione interfaccia in base all'array di associazione.
for (i in assoc) {
index = assoc.length-i-1;
if (index>0) {
// Creazione degli oggetti e dei target necessai.
duplicateMovieClip("drop0", "drop" add index, index);
duplicateMovieClip("drag0", "drag" add index, (index+assoc.length));
// Posizionamento degli oggetti e dei target alle coordinate corrette.
eval("drop" add index)._y = eval("drop" add (index-1))._y+eval("drop" add (index-1))._height+20;
eval("drag" add index)._y = eval("drop" add index)._y;
} else {
// Porta l'oggetto e il target "madre" ad un livello appropriato.
eval("drop" add index).swapDepths(index);
eval("drag" add index).swapDepths(index+assoc.length);
}
// Assegnazione di una variabile identificatrice.
eval("drag" add index).id = index;
// Associazione dei testi agli oggetti e ai target relativi.
eval("drag" add index).label.text = drag_txt[index];
eval("drop" add index).label.text = drop_txt[index];
}
delete i, index;
/*
################################################################
:: PROTOTYPE ::
Funzionamento: Controlla se l'oggetto è stato rilasciato sul
target corretto.
Input: Nessuno.
Output: TRUE se l'associazione è corretta.
FALSE se l'associazione non è corretta.
################################################################
*/
MovieClip.prototype.checkdrop = function() {
count++;
// Controlla se tutti gli oggetti sono stati trascinati su un target.
if (count>=assoc.length) {
for (i in assoc) {
// Calcola il punteggio ovvero associazioni giuste tra oggetto e target.
points += result[i];
// Rimuove i target e gli oggetti dallo stage.
removeMovieClip(eval("drag" add i));
removeMovieClip(eval("drop" add i));
}
// Porta la casella di testo in una posizione visibile.
_root.report._x = 5;
// Scrive il report del test eseguito.
_root.report.htmlText = " [b]- HAI TERMINATO IL TEST -[b]";
_root.report.htmlText += "______________________________";
_root.report.htmlText += "
";
_root.report.htmlText += " » RIASSUNTO DELLA PRESTAZIONE:";
_root.report.htmlText += " * Hai risposto correttamente a [" add points add "] su [" add result.length add "]";
_root.report.htmlText += " * Percentuale di successo [" add Math.round(points/result.length*100) add "%]";
_root.report.htmlText += "
";
_root.report.htmlText += "sw333t, th1z d3m0 r00lz du|>3.
C|b3rPu|\\]{ 0w|\\z'3d 4g41|\\ ...";
}
// Disabilita l'oggetto dopo che è stato trascinato su un target.
this.enabled = false;
// Output: true o false a seconda se l'associane è corretta o meno.
return (this.hitTest(eval("drop" add assoc[this.id])));
};
scritto dentro ai movieclip che trascino (dragX):
codice:
this.onPress = function() {
startDrag(this);
};
this.onRelease = function() {
stopDrag();
result[id] = checkdrop()
};
this.onReleaseOutside = function() {
stopDrag();
result[id] = checkdrop()
};
Sullo Stage ci sono 3 oggetti:
1 movieclip con nome di istanza "drag0"
1 movieclip con nome di istanza "drop0"
1 casella di testo dinamica con nome di istanza "report"
Entrambi i mc al loro interno contengono una casella di testo dinamica con nome di istanza "label"