Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/05/2010, 22:15
mariox55
 
Fecha de Ingreso: febrero-2008
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 2
Respuesta: limite de movimiento startdrag

Hola Chabri, hice un ejemplo a la rápida, la lógica es diferente a la que te propuse anteriormente, ahora puse 4 mc's que determinan el limite rectangular (arriba,abajo,derecha,izquierda), cada mc es una linea ubicada es una de estas posiciones, la idea es que cuando el mc que quieres arrastrar (en este caso circulo_mc) toque uno de los mc limite se detenga su arrastre con stopDrag();
de buenas a primeras no funciona al 100%, pero te puede servir de guía:

Dejo el link de donde subí la "Ayuda.fla" y pongo el código por si a alguien le sirve o pueden mejorarlo.
http://rapidshare.com/files/392379087/Ayuda.fla.html
http://www.megaupload.com/?d=C93OG245
Mis saludos.

//variable que te sirve para que desde el evento onMuseMove
//compruebes si se esta arrastrando el circulo
this.circulo_mc.arrastrando = new Boolean(false);


this.circulo_mc.onPress = function()
{
this.startDrag();
this.arrastrando = true;
};
this.circulo_mc.onMouseMove = function()
{
if(this.arrastrando)
{
restringirArrastre(this);//this hace referencia a circulo_mc
}
};
this.circulo_mc.onRelease = function()
{
this.arrastrando = false;
restringirArrastre(this);
this.stopDrag();
};
this.circulo_mc.onReleaseOutside = function()
{
this.arrastrando = false;
restringirArrastre(this);
this.stopDrag();
};

function restringirArrastre(mc:MovieClip):Void
{
if(mc.hitTest(limiteIzquierda_mc))
{
mc.stopDrag();
mc._x += 2;
}
if(mc.hitTest(limiteDerecha_mc))
{
mc.stopDrag();
mc._x -= 2;
}
if(mc.hitTest(limiteAbajo_mc))
{
mc.stopDrag();
mc._y -= 2;
}
if(mc.hitTest(limiteArriba_mc))
{
mc.stopDrag();
mc._y += 2;
}
}