Comunidad de diseño web y desarrollo en internet online

Problemas con graphics.clear()

Citar            
MensajeEscrito el 17 Feb 2014 07:47 pm

Código ActionScript :

function borrar(e:Event):void
{
   global.whiteBoard.graphics.clear();
   global.whiteBoard.graphics.lineStyle(9,0x000000);
}


Tengo la típica pizarra en as3, dibujo una linea, luego otra, y cuando deseo borrar borra todo lo que hay en la pizarra, cómo puedo hacer que sólo me borre la última línea y no todo e dibujo?? existe alguna forma?
Gracias.

Este es el código completo:

Código ActionScript :

public class Pencil extends efectoEducativo.utils.Button
   {
      public var global:Global;
      var whiteBoard:Shape;
      
      public function Pencil()
      {
         global = Global.getInstance();
      }
      
      override function onClick(e:MouseEvent)
      {
         trace("F1");
         global.whiteBoard.graphics.lineStyle(9,0x000000);
         global.zoomOn = false;
         pencilClick(e);
         super.onClick(e);
      }
      private function pencilClick(event:MouseEvent)
      {
         trace("F2");
         var className:String = getQualifiedClassName(event.currentTarget);
         trace(className);
         
         switch (className)
         {
            case "BotPencil" :
               if (!global.pinta)
               {
                  global.pinta = true;
                  global.stage.addEventListener(MouseEvent.MOUSE_DOWN,startPaint);
                  global.stage.addEventListener(MouseEvent.MOUSE_UP,stopPaint);
                  }
               else
               {
                  global.pinta = false;
                  global.stage.removeEventListener(MouseEvent.MOUSE_DOWN,startPaint);
                  global.stage.removeEventListener(MouseEvent.MOUSE_UP,stopPaint);
               }
               break;
               
            case "BotonErase" :
               borrar(event);
               break;
         }
      }

      private function startPaint(e:Event):void
      {
         global.whiteBoard.graphics.moveTo(global.stage.mouseX,global.stage.mouseY+5);
         addEventListener(Event.ENTER_FRAME,paint);
      }
      private function stopPaintTwo():void
      {
         removeEventListener(Event.ENTER_FRAME,paint);
      }
      private function stopPaint(e:Event):void
      {
         removeEventListener(Event.ENTER_FRAME,paint);
      }
      
      function paint(e:Event):void
      {
         if (! global.pinta)
         {
            stopPaintTwo();
            trace("pintando 1");
         }
         else
         {
            global.whiteBoard.graphics.lineTo(global.stage.mouseX,global.stage.mouseY+5);
            trace("pintando 2");
         }
      }
      
      function borrar(e:Event):void
      {
         trace("borré la cuestión!");
         global.whiteBoard.graphics.clear();
         global.whiteBoard.graphics.lineStyle(9,0x000000);
      }
   }

Por danielillapp

35 de clabLevel



Genero:Femenino  

Aprendiz de la vida y AS3

chrome
Citar            
MensajeEscrito el 18 Feb 2014 02:41 pm
Deberías guardar la posición desde que hiciste el último click/release, es decir guardas los dos puntos. Luego no existe borrado selectivo, lo que tienes que hacer es repetir esa línea, pero con el mismo color del fondo, blanco por ejemplo.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 26 Feb 2014 04:17 pm
Esa idea es buena solis pero si la linea pasa a traves de un fondo de diferentes colores?

Yo intentaria experimentar creando un array donde almacenar varios niveles de "undo" con el color de todos los pixeles comprendidos entre los 2 puntos antes de ser pintada la linea, de esa manera al hacer un undo puede ir restableciendo pasos.
Seguramente abria que resolver algun que otro problema mas pero yo probaria.

Tambien se me ocurre para experimentar que cada vez que se pinte crear una nueva pizarra/shape asi cuando quiera retroceder un paso atras solo tiene que eliminar el ultimo shape, aunque esto plantea otras series de problemas como cuando si quieremos aplicar un relleno abria que solapar todos los shapes o algo por el estilo no se.

Ciertamente no se me ocurre nada mas, espero que encuentres una buena solucion.

Javier

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

firefox
Citar            
MensajeEscrito el 26 Feb 2014 04:21 pm
Bueno perdon, tienes otra opcion que es trabajar a nivel de pixel con bitmaps, que seguro te ofrece mayores prestaciones para cualquier cosa que quieras hacer

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

firefox
Citar            
MensajeEscrito el 03 Mar 2014 02:52 pm
he estado probando mil cosas y aún estoy un poco pegada con este asunto, encontré un ejemplo por ahí pero efectivamente funciona con bitmap, seguiré intentándolo

Por danielillapp

35 de clabLevel



Genero:Femenino  

Aprendiz de la vida y AS3

chrome
Citar            
MensajeEscrito el 07 Abr 2014 03:57 pm

Por rodrigolopezpeker

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Abr 2014 07:32 pm
gracias por la ayuda, me sirvió ;)

Por danielillapp

35 de clabLevel



Genero:Femenino  

Aprendiz de la vida y AS3

chrome
Citar            
MensajeEscrito el 16 Abr 2014 10:49 pm
Me alegro, estamos para ayudar.

Por rodrigolopezpeker

61 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.