Originariamente inviato da longline
L'hitTest invece come dovrei usarlo?
Allora, premetto che in generale ho smesso di utilizzare i bottoni, usando al loro posto i movieClip, che hanno tutte le funzioni dei bottoni ed in più tutte quelle della classe MovieClip.
Quindi anche se in questo caso non sarebbe necessario, useremo solo movieClip nell'esempio [sorgente esempio]:
- Creiamo due movieClip, uno a forma di cerchio e un altro a forma di quadrato [più grande del cerchio]
- Chiamiamo ed istanziamo il cerchio come cerchio_mc ed il quadrato come quadrato_mc
- Associamo al frame principale del filmato il seguente codice:
codice:
quadrato_mc.onPress = function() {
this.startDrag();
};
quadrato_mc.onRelease = quadrato_mc.onReleaseOutside=function () {
this.stopDrag();
};
cerchio_mc.onRelease = function() {
trace(this._name+" è attivo");
};
- Testiamo il filmato: vedremo che cliccando sopra il cerchio comparirà nell'output cerchio_mc è attivo. Sempre in modalità testa filmato, trasciniamo il quadrato sopra al cerchio e proviamo a cliccare nuovamente il cerchio: avremo sempre come messaggio cerchio_mc è attivo.
- Per raggiungere il nostro scopo dobbiamo aggiungere al codice alcune righe [sotto inserisco in rosso le linee da aggiungere]:
codice:
MovieClip.prototype.copri = function(mcDaCoprire) {
this.onEnterFrame = function() {
if (this.hitTest(mcDaCoprire)) {
mcDaCoprire.enabled = false;
} else {
mcDaCoprire.enabled = true;
}
};
};
this.quadrato_mc.copri(cerchio_mc);
quadrato_mc.onPress = function() {
this.startDrag();
};
quadrato_mc.onRelease = quadrato_mc.onReleaseOutside=function () {
this.stopDrag();
};
cerchio_mc.onRelease = function() {
trace(this._name+" è attivo");
};
E' importante che la parte in rosso venga inserita prima di tutto il codice...
Adesso testando il filmato e trascinando il quadrato sopra il cerchio, quest'ultimo deve rimanere inattivo e provando a cliccarlo non deve comparire nessun messaggio. Se spostiamo nuovamente il quadrato il cerchio torna attivo 