Foros del Web » Creando para Internet » Flash y Actionscript »

Parar una función (o modificarla) (AS3)

Estas en el tema de Parar una función (o modificarla) (AS3) en el foro de Flash y Actionscript en Foros del Web. Hola, Tengo este código que me permite dibujar una línea en el stage. Tengo tres botones: uno (btn_l_alzada) para iniciar la función, otro (btn_limpiar) para ...
  #1 (permalink)  
Antiguo 29/11/2012, 22:59
Avatar de Beatzoo  
Fecha de Ingreso: septiembre-2009
Ubicación: Retire Hill
Mensajes: 27
Antigüedad: 14 años, 7 meses
Puntos: 0
Parar una función (o modificarla) (AS3)

Hola,

Tengo este código que me permite dibujar una línea en el stage. Tengo tres botones: uno (btn_l_alzada) para iniciar la función, otro (btn_limpiar) para borrar las líneas y un tercero (btn_stop) que es el que no consigo que me funcione, pues se supone que es el que, una vez pulsado, evite el trazo de la línea en el escenario. Es una aplicación drag and drop y si no evito que la línea deje de dibujarse al pulsar dicho botón, cualquier objeto que arrastre por el escenario va a ir precedido de dicha línea.

Código AS3:
Ver original
  1. btn_l_alzada.addEventListener(MouseEvent.CLICK, drawAlzada);
  2.  
  3. function drawAlzada(event:MouseEvent):void{
  4.  
  5. var line:Sprite;
  6. line = new Sprite();
  7. addChild(line);
  8.  
  9. stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
  10. stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
  11. btn_limpiar.addEventListener(MouseEvent.CLICK, clearLines);
  12. btn_stop.addEventListener(MouseEvent.CLICK,stopLines);
  13.  
  14. function mouseDownHandler(event:MouseEvent):void {
  15.     line.graphics.lineStyle(6);
  16.     line.graphics.moveTo(mouseX,mouseY);
  17.     stage.addEventListener(MouseEvent.MOUSE_MOVE,movement);}
  18.  
  19.  
  20. function mouseUpHandler(event:MouseEvent):void {
  21.     stage.removeEventListener(MouseEvent.MOUSE_MOVE,movement);}
  22.  
  23.  
  24. function movement(event:MouseEvent):void {
  25.     line.graphics.lineTo(mouseX,mouseY);}
  26.  
  27.  
  28. function clearLines(event:MouseEvent):void {
  29.     line.graphics.clear();}
  30.  
  31. function stopLines(event:MouseEvent):void {
  32.         line.graphics.lineStyle();
  33.     line.graphics.moveTo(mouseX,mouseY);
  34.     stage.addEventListener(MouseEvent.MOUSE_MOVE,movement);}
  35.    
  36.  
  37.  
  38. }


Había intentado con este código en el botón btn_stop:

Código AS3:
Ver original
  1. function stopLines(event:MouseEvent):void {
  2.         line.graphics.lineStyle();
  3.     line.graphics.moveTo(mouseX,mouseY);
  4.     stage.addEventListener(MouseEvent.MOUSE_MOVE,movement);}

Dejar sin valor el

Código AS3:
Ver original
  1. line.graphics.lineStyle();

hace que no se dibuje ninguna línea, pero ya no sé como hacerlo para conseguir el propósito.

Muchas gracias y un saludo.
  #2 (permalink)  
Antiguo 29/11/2012, 23:27
Avatar de Beatzoo  
Fecha de Ingreso: septiembre-2009
Ubicación: Retire Hill
Mensajes: 27
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Parar una función (o modificarla) (AS3)

Vale, solucionado.
Obviamente, no vamos a parar la función, la clave estaba en un removeEventListener. La solución sería:

Código AS3:
Ver original
  1. function stopLines(event:MouseEvent):void {
  2.     stage.removeEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler)
  3.     stage.removeEventListener(MouseEvent.MOUSE_UP,mouseUpHandler)}

Era una opción que y había probado, pero obviando el stage.

Ahora sí funciona el código, ahí está para el que lo quiera usar.

Saludos.

Etiquetas: as3, graficos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:03.