Este es un pequeño ejemplo de como hacer un arrastrar y soltar de un movieclip en actionscript3.
El primer paso será crear en Flash 9 un Movieclip al que colocaremos el nombre de instancia "clip".
En el fotograma añadiremos el código para detectar los eventos de onPress y onRelease del MovieClip:
Código :
clip.addEventListener(MouseEvent.MOUSE_DOWN, onMouse_Down); clip.addEventListener(MouseEvent.MOUSE_UP, onMouse_Up);
Ahora a estas funciones que lanzan los listeners colocaremos el startDrag() y el stopDrag() que moverán el MovieClip:
Código :
function onMouse_Down(e:Event):void{
clip.startDrag()
}
function onMouse_Up(e:Event):void{
clip.stopDrag();
}Así de simple será actualizar un drag & drop a Actionscript 3.
Para mejorar este código podríamos colocarlo dentro de una clase:
Código :
package
{
import flash.display.*
import flash.events.*;
//————————————
public class Drag extends MovieClip{
public var clip:MovieClip = new MovieClip();
//————————————
public function Drag(queClip){
clip = queClip
clip.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
clip.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
//————————————
private function onMouseDown(e:Event):void{
clip.startDrag()
}
//————————————
private function onMouseUp(e:Event):void{
clip.stopDrag();
}
}
}TODO este código deberá ir dentro de un archivo actionscript que se debe llamar "Drag.as", e ir colocado al lado de nuestro archivo .FLA, o dentro de un package:
Código :
package nombrecarpeta
{
...
}Una vez creado este archivo, utilizaremos el drag & drop en nuestra pelicula de la siguiente manera:
Código :
import Drag var drag:Drag = new Drag(clip);
Importaremos la clase a la pelicula, crearemos una instancia de la clase y le pasaremos el monbre del MovieClip a mover como parametro... y listo

Por lijandro-mesa el 08 de Diciembre de 2006
Por :S el 02 de Marzo de 2007
jaja
Mejor me quedo con el Actionscript2
juaxD
Por silmar masariegoz av el 18 de Abril de 2007
digo para comprenderla mejor.
Por andres el 04 de Mayo de 2007
Por Newberemis el 13 de Mayo de 2007
Warning: 1090: Migration issue: The onMouseDown event handler is not triggered automatically by Flash Player at run time in ActionScript 3.0. You must first register this handler for the event using addEventListener ( 'mouseDown', callback_handler).
Warning: 1090: Migration issue: The onMouseUp event handler is not triggered automatically by Flash Player at run time in ActionScript 3.0. You must first register this handler for the event using addEventListener ( 'mouseUp', callback_handler).
Pero si funciona normal
Por Vaya tela el action el 19 de Mayo de 2007
Sobre todo con esto de los paskages, mas archivos llenando mi disco duro, es que no entienden que neceisto ese espacio extra para los videos de keira
Alguien ha hecho una mejora de este post?
Por kassel el 10 de Septiembre de 2007
Por willow001 el 10 de Septiembre de 2007
Simplemente ¡¡¡EXCELENTE!!!!, solo una duda, en tu post dices
TODO este código deberá ir dentro de un archivo actionscript que se debe llamar "Drag.as", e ir colocado al lado de nuestro archivo .FLA, o dentro de un package:
Código :
package nombrecarpeta { ... }Puedes explicar esto del package un peliiiinnnnnn, no lo acabo de entender.
Muchas gracias, cada dia me encuentro mas comodo en AS3.
Saludos
Por Duque de Rivas (lo el 10 de Septiembre de 2007
Es decir, si tu archivo "clase.as" está en la carpeta "miCarpeta", su paquete (package) sería, justamente, esa carpeta:
Código :
package miCarpeta { class clase { // Métodos } }A todos los demás les digo que AS3 asusta, pero es muy cómodo una vez que se acostumbren (hace 10 días que lo uso). Si igual les resulta difícil, empiecen programando OOP en AS2; luego de eso, el pasaje no es tan jodido.Por danilo el 06 de Noviembre de 2007
Por Marco Antonio Solis el 07 de Noviembre de 2007
Esto quedó asi...
package com.utils{
import flash.display.*;
import flash.events.*;
public class DragDrop {
public function DragDrop() {
}
public static function asignarDrag(_mc:MovieClip) {
_mc.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
_mc.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
private static function onMouseDown(e:Event):void {
e.currentTarget.startDrag();
}
private static function onMouseUp(e:Event):void {
e.currentTarget.stopDrag();
}
}
}
Y asi solo para usarla seria:
import com.utils.DragDrop;
DragDrop.asignarDrag(c2);
DragDrop.asignarDrag(clip);
donde "c2" y "clip" son los nombres de movieclips que previamente se han creado...
Espero les sea de utilidad... y excelente forma de iniciar a este mundillo... =)
Un saludo desde México
Por Jenkah el 12 de Noviembre de 2007
Lo que quiero hacer es un juego de muñequitas que se peudan vestir (como las de papel). Cada vez que arrastre un objeto (una prenda) la muñeca se movería o haría algo, con lo cual cambiaría su apariencia o su posición. ¿Me podrían decir cómo puedo hacer para que esas animaciones se puedan cargary que a la vez, sin importar el orden de Drag
Por JENKAH el 12 de Noviembre de 2007
Por nico el 12 de Diciembre de 2007
Por samu el 04 de Julio de 2008
"1037:los paquetes no se pueden anidar"
busque pero no encuentro que cual es el error
Por Gaston Morixe el 08 de Septiembre de 2008
alguna sugerencia?
Gracias
Por pamela el 17 de Septiembre de 2008
Cuando arrastre mi objeto se quede exactamente en las coordenasdas que le ponga; pero no se donde van alguien me puede ayudar??
Por flafla el 23 de Octubre de 2008
Gracias por estos Tips.
Por flafla el 23 de Octubre de 2008
clip.startDrag(false,new Rectangle(0, 0, 400, 300));
//-> new Rectangle(x,y,x2,y2)
Por charu el 09 de Noviembre de 2008
function arrastre(evento:mouseEvent){
cuadrado_mc.startDrag()
}
cuadrado_mc.addEventListener("MouseDown",arrastre)
function soltar (evento:mouseEvent){
cuadrado_mc.stopDrag()
}
cuadrado_mc.addEventListener("MouseUp",soltar
y seria...
Por una duda... el 11 de Noviembre de 2008
Por cande el 15 de Diciembre de 2008
Por Alejandro el 20 de Diciembre de 2008
Por rodrigo-azul el 16 de Febrero de 2009
Por Pablo el 05 de Junio de 2009
el tip está bien interesante, lo que aún no puedo comprender es xq me funciona sólo poniendo el código, es decir, sin utilizar la clase.
Por Sole el 01 de Julio de 2009
Por Anonimo el 02 de Julio de 2009
no se si haya dado en el punto
Por octavio el 22 de Julio de 2009
Por elmorro el 01 de Febrero de 2010
Por wil el 22 de Febrero de 2010
lo q debes hacer es capturar la posicion inicial X y Y en 2 variables respectivamente.
luego cuando sueltes el mc arrastrado verificas con un if si esta en el lugar correcto else de lo contrario le pasas las cordenas iniciales X y Y.
Por mariox55 el 11 de Junio de 2010
saludos.
Por Smashing Pumpkins el 16 de Julio de 2010
¿Como se puede dar solucion a este problema?
Por Marta el 22 de Marzo de 2011
Alguien me puede ayudar? Por favor, estoy atascada he probado de todo alguna idea??? Gracias
Por horazzio el 18 de Agosto de 2011
horazzio@hotmail.com