Ahora el mismo ejercicio desarrollado con ActionScript 3
Código ACTIONSCRIPT:
Ver original//Primero que todo hay que crear dos clips uno llamado drag y el otro drop.
//Obviamente Drag sera el clip a Arrastrar y Drop sera la zona Sensible en la
//cual deberia caer el clip de drag.
//todo lo demás es automático
//si el Drag no tiene una zona sensible valida automaticamente se vuelve
// a la coordenada de donde salio.
var dropped:MovieClip = drop;
var dragger:MovieClip = drag;
var back:MovieClip = new MovieClip();
var curclip:MovieClip = new MovieClip()
back.x = dragger.x;
back.y = dragger.y;
dragger.init = back;
dragger.addEventListener(MouseEvent.MOUSE_DOWN, comienzadrag);
dragger.addEventListener(MouseEvent.MOUSE_UP, finalizadrag);
function comienzadrag(a:MouseEvent):void{
var clip:MovieClip = a.currentTarget as MovieClip;
curclip = clip;
stage.addEventListener(MouseEvent.MOUSE_UP, releaseoutside);
clip.startDrag(false, null);
}
function finalizadrag(a:MouseEvent):void{
var clip:MovieClip = a.currentTarget as MovieClip;
clip.stopDrag();
var qdrop:* = clip.dropTarget;
if(qdrop){
var pt:MovieClip = qdrop.parent as MovieClip;
if(pt==dropped){
backmovie(clip, pt);
}else{
backmovie(clip, clip.init);
}
}else{
backmovie(clip, clip.init);
}
}
function releaseoutside(a:MouseEvent):void{
if(curclip){
var pt:MovieClip = curclip.parent as MovieClip;
curclip.stopDrag();
if(a.target==stage){
backmovie(curclip, curclip.init);
stage.removeEventListener(MouseEvent.MOUSE_UP, releaseoutside);
}else{
curclip = null;
}
}
}
function backmovie(a:MovieClip, b:MovieClip):void{
a.x = b.x;
a.y = b.y;
}
Espero le sea de ayuda a alguna persona.
Saluda Atte.
Claudio Barrera Asencio.