Drag and Drop en AS3

November 9th, 2006 Posted in AS3, Efectos, Trucos

Este es un pequeño ejemplo de como hacer un drag & drop de un Movieclip en actionscript 3.

Crearemos en flash9 un Movieclip al que llamaremos "clip".

En el fotograma añadiremos el siguiente código:

clip.addEventListener(MouseEvent.MOUSE_DOWN, onMouse_Down);
clip.addEventListener(MouseEvent.MOUSE_UP, onMouse_Up);

Con esto asignaremoslos eventos de pulsar y soltar el mouse sobre el clip a las funciones "onMouse_Down" y "onMouse_Up".

Ahora definiremos estas funciones:

function onMouse_Down(e:Event):void{
clip.startDrag()
}
function onMouse_Up(e:Event):void{
clip.stopDrag();
}

Con esto ya tendríamos el MovieClip "clip" arrastrable.

Este mismo código lo podríamos haber puesto dentro de una clase AS3:

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();
}
}
}

Al crear el constructor de la clase deberemos pasarle el MovieClip a arrastrar como parámetro:

import Drag
var drag:Drag = new Drag(clip);

Comparte:
  • Meneame
  • Twitter
  • Facebook
  • Google Bookmarks
  • del.icio.us
  • Technorati
  • email
  • Print

Post relacinonados:

  1. onReleaseOutside, onDragOut, onDragOver en ActionScript 3
  2. Panel de zoom de imágenes en Flex
  3. Panel de zoom de imágenes en ActionScript 3
  4. Añadir funciones al teclado con Actionscript 3
  5. Otener parámetros en eventos de Actionscript 3

3 Responses to “Drag and Drop en AS3”

  1. eldervaz Says:

    hola, unas de las cosas que me costo averiguar, fue precisamente lo q indicas aqui en la instancia de tu clase


    var drag:Drag = new Drag(clip);

    dado q en el libro de cookbook de as 3.0 nunca mencionan esto, pero esta muy bueno tu aporte.

    Vi que no usaste constructor en tu clase? no hay problemas con eso?.

    saludos

    eldervaz
    pd.- pasame el dato de donde compraste tu dominio *.as :p


  2. admin Says:

    Ups! fallo mio. Si que uso constructor, le cambié el nombre y no me di cuenta al publicarlo.. ya lo cambié
    Drag()
    El domio .as lo compré aqui:
    http://www.active24.es/
    ;)


  3. UnManuel Says:

    esta implementacion falla si arrastras el componente por debajo de otro y sueltas el mouse


Leave a Reply