Drag and Drop en AS3
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);
Compártelo:
Visto 18.092 veces
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
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/
😉
esta implementacion falla si arrastras el componente por debajo de otro y sueltas el mouse
merci!
Comment by UnManuel — 28 December, 2011 @ 4:08 pm
esta implementacion falla si arrastras el componente por debajo de otro y sueltas el mouse
si quieres evitar ese problema, agregale un listener al stage
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
hay una forma de que uno pasa de una escena a otra, ejemplo: arrastrando un objeto en la escena y que al soltar el objeto en la zona indicada me lleve a otro fotograma? es posible??