Si lo que deseas hacer es solo lo que describes, es muy complicado tener movies con botones dentro y cada uno con líneas de código, todo esto lo puedes resolver con menos trabajo.
Por ejemplo imagina que tengas en tu escena 4 movies, con nombres de instancia "champ" y "fruta" que son los que vas a arrastrar y tienes otros dos "p_der" y "p_izq" que son donde vas a soltar, solamente sitúa este código
en el frame donde se encuentran los movies y hará todo lo que deseas.
En caso de que sean más movies a arrastrar, solo añade el nombre de estos en el arreglo "fruits" y no tendrás que cambiar más nada en el código te seguirá funcionando, si deseas añadir más movies donde soltar los primeros, solamente añade su nombre en el arreglo "pizzas".
Código ActionScript :
//---Movies a arrastrar
var fruits:Array = new Array("champ", "fruta");
//---Donde vas a soltar los movies
var pizzas:Array = new Array("p_der", "p_izq");
//---Acciones de los movies
for(var i:Number = 0; i < fruits.length; i++){
//---Guardar posiciones iniciales
this[fruits[i]].posX = this[fruits[i]]._x;
this[fruits[i]].posY = this[fruits[i]]._y;
//---Cuando se presione
this[fruits[i]].onPress = function():Void{
this.swapDepths(this._parent.getNextHighestDepth());
this.startDrag();
}
//---Cuando se suelte
this[fruits[i]].onRelease = function():Void{
stopDrag();
var drop:String = this._droptarget;
var movieName:String = drop.slice(1, drop.length);
if(pizzas.indexOf(movieName) >= 0){
this._x = this._parent[movieName]._x;
this._y = this._parent[movieName]._y;
}else{
this._x = this.posX;
this._y = this.posY;
}
}
}
//---Prototype de indexOf
Array.prototype.indexOf = function(search):Number {
var total:Number = this.length;
var index:Number = -1;
var item:Number = 0;
var finded:Boolean = false;
while (item<total && !finded) {
if (this[item] == search) {
index = item;
finded = true;
} else {
item++;
}
}
return index;
};