Ciao.
Il problema è dovuto al fatto che l'evento onRelease avviene esclusivamente quando si rilascia il pulsante del mouse mentre il cursore si trova esattamente sull'istanza alla quale è assegnato tale evento.
Se viene rilasciato il mouse quando il cursore si trova su un'altro pulsante, o al difuori del pulsante (o istanza) su cui abbiamo cliccato, l'evento che avviene è esattamente onReleaseOutside.
Dovresti quindi associare questo evento alla stessa funzione dell'evento onRelease che hai già inserito.
Ti consiglio inoltre di aggiungere, se non lo hai già fatto, la funzione updateAfterEvent all'interno di un evento onMouseMove, in modo che il refresh dello schermo sia sincronizzato col movimento del mouse e non relativo alla frequenza fotogrammi.
In pratica, in questo modo, noterai più fluidità durante il trascinamento delle istanze.
Ancora un'altra cosa.
Potresti utilizzare il metodo swapDephts, che serve a cambiare l'ordine z delle istanze, indicando il valore più alto ogni volta che trascini un'istanza.
Questo farà in modo di mantenere l'istanza trascinata sempre in primo piano rispetto a tutte le altre.
Potresti inoltre snellire il tuo script con l'utilizzo di un ciclo for per assegnare le funzioni alle istanze in modo dinamico, così da non dover ripetere lo stesso script per ogni istanza, dato che hai scritto di avere diverse istanze...
... ma questo è un'altro discorso per ora ti posto lo script con le modifiche che ti ho descritto sopra.
Le parti aggiunte le ho evidenziate in rosso.
codice:
mc.onPress = function() {
this.x = this._x;
this.y = this._y;
this.startDrag(false);
this.swapDepths(this._parent.getNextHighestDepth());
};
mc.onRelease = mc.onReleaseOutside=function () {
this._x = this.x;
this._y = this.y;
this.stopDrag();
};
mc1.onPress = function() {
this.x = this._x;
this.y = this._y;
this.startDrag(false);
this.swapDepths(this._parent.getNextHighestDepth());
};
mc1.onRelease = mc1.onReleaseOutside=function () {
this._x = this.x;
this._y = this.y;
this.stopDrag();
};
_root.onMouseMove = function() {
updateAfterEvent();
};
PS: è buona abitudine utilizzare i relativi tag di formattazione [ code ] [ /code] o [ php ] [ /php ] quando si posta dello script, in modo da rendere la discussione più pulita e facilmente comprensibile.