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.Originariamente inviato da longline
L'hitTest invece come dovrei usarlo?
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:
- 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.codice:quadrato_mc.onPress = function() { this.startDrag(); }; quadrato_mc.onRelease = quadrato_mc.onReleaseOutside=function () { this.stopDrag(); }; cerchio_mc.onRelease = function() { trace(this._name+" è attivo"); };
- Per raggiungere il nostro scopo dobbiamo aggiungere al codice alcune righe [sotto inserisco in rosso le linee da aggiungere]:
E' importante che la parte in rosso venga inserita prima di tutto il codice...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"); };
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
![]()



Rispondi quotando