por si las dudas, agrego una implementacion un poco mas flexible para arrastrar la cantidad deseada de MC.
Código ActionScript :
import flash.display.MovieClip;
import flash.events.MouseEvent;
// variables necesarias para el multiDrag
var drag :Vector.<MovieClip> = new Vector.<MovieClip> ( ); // almacena los MC que se arrastraran
var prevX :Number; // para calcular la cantidad de arrastre
var prevY :Number; // de ambos ejes
var dragTarget :MovieClip; // esta variable almacenara el MC que se clickeo para comenzar el multiDrag
// esta funcion agrega n cantidad de MC al multidrag
function addDrag ( ...mcList ) : void
{
for each ( var mc :MovieClip in mcList )
{
drag.push ( mc );
mc.addEventListener ( MouseEvent.MOUSE_DOWN , startMultiDrag , false , 0 , true );
}
}
// y esta los remueve del mutidrag
function removeDrag ( mc:MovieClip ) : void
{
var len :uint = this.drag.length;
for ( var i:uint ; i < len ; i++ )
{
if ( this.drag [ i ] == mc )
{
this.drag.splice ( i , 1 );
mc.removeEventListener ( MouseEvent.MOUSE_DOWN , startMultiDrag );
return;
}
}
}
// estas funciones de aqui abajo se encargan de la magia!
function startMultiDrag ( event:MouseEvent ) : void
{
this.dragTarget = event.currentTarget as MovieClip;
this.prevX = event.stageX;
this.prevY = event.stageY;
stage.mouseChildren = false;
stage.addEventListener ( MouseEvent.MOUSE_MOVE , doMultiDrag , false , 0 , true );
stage.addEventListener ( MouseEvent.MOUSE_UP , stopMultiDrag , false , 0 , true );
}
function doMultiDrag ( event:MouseEvent ) : void
{
for each ( var mc :MovieClip in this.drag )
{
mc.x += event.stageX - this.prevX;
mc.y += event.stageY - this.prevY;
}
this.prevX = event.stageX;
this.prevY = event.stageY;
event.updateAfterEvent ( );
}
function stopMultiDrag ( event:MouseEvent ) : void
{
stage.mouseChildren = true;
stage.removeEventListener ( MouseEvent.MOUSE_MOVE , doMultiDrag );
stage.removeEventListener ( MouseEvent.MOUSE_UP , stopMultiDrag );
this.removeDrag ( this.dragTarget );
}
la manera de implementacion seria la siguiente:
Código ActionScript :
// la implementacion es como la de addChild o removeChild
// solo que addDrag ( ) premite agregar mas de un MC separado por comas:
addDrag ( crojo , cazul ); // se pueden agregar todos los MC que quieran
// y con esta funcion retiramos del drag el MC que queremos:
removeDrag ( crojo );