Pintura Flash CS3: en tiempo real goma de borrar

Lunes, 11 de febrero 2008

A partir de los códigos incluidos en Crear un Paint en Flash CS3, y la realización de pequeñas modificaciones, se puede mejorar mucho la herramienta para "borrar". Adición de una forma no es visible, se puede utilizar como un "plan" para ejecutar el draw() en la mezcla el modo de "borrar". Como se muestra en el ejemplo siguiente, después de dibujar algo, mantenga presionada la tecla Ctrl y el efecto de "borrar" aparece ahora en tiempo real.

Cargando Flash Player ...

El código es el siguiente - fuente:

ActionScript
  1. . MouseEvent ; flash.events de importación. MouseEvent;
  2. . BitmapData ; flash.display de importación. BitmapData;
  3. . Bitmap ; flash.display de importación. Bitmap;
  4. . GradientType ; flash.display de importación. GradientType;
  5. / /
  6. . Matrix ; flash.geom de importación. Matrix;
  7. / /
  8. Boolean = false ; MD var: Boolean = false;
  9. / /
  10. Sprite = new Sprite ( ) ; event_spr var: Sprite = Sprite nuevo ();
  11. event_spr ) ; addChild (event_spr);
  12. / /
  13. Number = event_spr . stage . stageWidth ; area_width var: Número = event_spr. etapa. stageWidth;
  14. Number = event_spr . stage . stageHeight - 32 ; area_height var: Número = event_spr. etapa. stageHeight - 32;
  15. / /
  16. String = GradientType . LINEAR ; fillType var: String = GradientType. linealidad;
  17. : Array = [ 0xFF0000 , 0x00FF00 , 0x0000ff ] ; var colors: Array = [0xFF0000, 0x00FF00, 0x0000FF];
  18. : Array = [ 1 , 1 , 1 ] ; var alphas: Array = [1, 1, 1];
  19. : Array = [ 0 , 128 , 255 ] ; var ratios: Array = [0, 128, 255];
  20. String = SpreadMethod . PAD ; var spreadMethod: String = SpreadMethod. PAD;
  21. : Matrix = new Matrix ( ) ; var matriz: Matrix = Matrix nuevo ();
  22. createGradientBox ( area_width , area_height , 1 , 0 , 0 ) ; matriz. createGradientBox (area_width, area_height, 1, 0, 0);
  23. / /
  24. event_spr . graphics ) { con (event_spr. gráficos) (
  25. fillType , colors , alphas , ratios , matrix , spreadMethod ) ; (beginGradientFill fillType, colores, alphas, ratios, matriz, spreadMethod);
  26. 0 , 0 , area_width , area_height ) ; drawRect (0, 0, area_width, area_height);
  27. ; endFill ();
  28. )
  29. / / Evento Paint
  30. ( MouseEvent . MOUSE_DOWN , _onMouseDown ) ; event_spr. addEventListener (MouseEvent. MOUSE_DOWN, _onMouseDown);
  31. ( MouseEvent . MOUSE_MOVE , _onMouseMove ) ; event_spr. addEventListener (MouseEvent. MOUSE_MOVE, _onMouseMove);
  32. ( MouseEvent . MOUSE_UP , _onMouseUp ) ; event_spr. addEventListener (MouseEvent. MOUSE_UP, _onMouseUp);
  33. ( MouseEvent . MOUSE_OUT , _onMouseUp ) ; event_spr. addEventListener (MouseEvent. MOUSE_OUT, _onMouseUp);
  34. / /
  35. BitmapData = new BitmapData ( event_spr . width , event_spr . height , true , 0 ) ; bmpd var: BitmapData = BitmapData nuevo (event_spr. ancho, event_spr. altura, es cierto, 0);
  36. Bitmap = new Bitmap ( bmpd ) ; var bmp: Bitmap = Bitmap nuevo (bmpd);
  37. bmp ) ; addChild (bmp);
  38. / /
  39. / / Forma temporal
  40. Shape = new Shape ( ) ; draw_shape var: Forma = Forma nueva ();
  41. draw_shape ) ; addChild (draw_shape);
  42. / /
  43. / / Forma, no visible, utilizado para la cancelación de la ""
  44. Shape = new Shape ( ) ; erase_shape var: Forma = Forma nueva ();
  45. / /
  46. e : MouseEvent ) : void { función _onMouseDown (e: MouseEvent): void (
  47. ) ; debug ( "_onMouseDown");
  48. . lineStyle ( 10 , 0xffffff , 1 ) ; draw_shape. gráficos. lineStyle (10, 0xFFFFFF, 1);
  49. . lineStyle ( 20 , 0xffffff , 1 ) ; erase_shape. gráficos. lineStyle (20, 0xFFFFFF, 1);
  50. . moveTo ( e . localX , e . localY ) ; draw_shape. gráficos. moveTo (elegidos por localX, y. localy);
  51. . moveTo ( e . localX , e . localY ) ; erase_shape. gráficos. moveTo (elegidos por localX, y. localy);
  52. md = true;
  53. )
  54. / /
  55. e : MouseEvent ) : void { función _onMouseUp (e: MouseEvent): void (
  56. md = false;
  57. . draw ( draw_shape ) ; bmp. BitmapData. empate (draw_shape);
  58. . clear ( ) ; draw_shape. gráficos. Clear ();
  59. . clear ( ) ; erase_shape. gráficos. Clear ();
  60. )
  61. / /
  62. e : MouseEvent ) : void { función _onMouseMove (e: MouseEvent): void (
  63. ) ; debug ( "_onMouseMove");
  64. md && ! e . ctrlKey ) { if (MD & &! y. ctrlKey) (
  65. . lineTo ( e . localX , e . localY ) ; draw_shape. gráficos. lineTo (elegidos por localX, y. localy);
  66. ( md && e . ctrlKey ) { ) Else if (MD & & y. CtrlKey) (
  67. . lineTo ( e . localX , e . localY ) ; erase_shape. gráficos. lineTo (elegidos por localX, y. localy);
  68. . draw ( erase_shape , null , null , "erase" ) ; bmp. BitmapData. empate (erase_shape, null, null, "borrar");
  69. )
  70. )
  71. / /
  72. v : String ) : void { depuración de la función (v: String): void (
  73. : Date = new Date ( ) ; var d: Fecha = Fecha de nuevo ();
  74. d . getMinutes ( ) + ":" + d . getSeconds ( ) + ":" + d . getMilliseconds ( ) + ": " + v ) ; trace (d. getMinutes () + ": getSeconds" + D. () + ": getMilliseconds" + D. () + ":" + v);
  75. )

Ha añadido una nueva forma, erase_shape no visible (no se ha hecho ningún addChild()

ActionScript
  1. ...
  2. / / Forma, no visible, utilizado para la cancelación de la ""
  3. Shape = new Shape ( ) ; erase_shape var: Forma = Forma nueva ();

En la parte de código que se encarga del diseño se ha introducido para controlar la tecla Ctrl y, si se pulsa, se refiere precisamente el erase_shape Forma y copia en el mapa de bits:

ActionScript
  1. ....
  2. . lineTo ( e . localX , e . localY ) ; erase_shape. gráficos. lineTo (elegidos por localX, y. localy);
  3. . draw ( erase_shape , null , null , "erase" ) ; bmp. BitmapData. empate (erase_shape, null, null, "borrar");

Post relacionados

Fue útil esta información?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Cargando ...

2 comentarios a "Pintura Flash CS3: en tiempo real goma de borrar"

  1. getAvatar 1,0
    20 de noviembre 2009, Greg

    Una palanca de Mejora en la Función y drenaje de la Hizo una clase mí.

    ActionScript
    1. paquete (
    2. . Sprite ; flash.display de importación. Sprite;
    3. . MouseEvent ; flash.events de importación. MouseEvent;
    4. . BitmapData ; flash.display de importación. BitmapData;
    5. . Bitmap ; flash.display de importación. Bitmap;
    6. . GradientType ; flash.display de importación. GradientType;
    7. . SpreadMethod ; flash.display de importación. SpreadMethod;
    8. . Shape ; flash.display de importación. Forma;
    9. . Matrix ; flash.geom de importación. Matrix;
    10. . setInterval ; flash.utils de importación. setInterval;
    11. . clearInterval ; flash.utils de importación. clearInterval;
    12. BitmapErase extends Sprite { BitmapErase public class Sprite (
    13. md : Boolean = false ; MD private var: Boolean = false;
    14. event_spr : Sprite ; event_spr private var: Sprite;
    15. area_width : Number ; area_width private var: Number;
    16. area_height : Number ; area_height private var: Number;
    17. fillType : String = GradientType . LINEAR ; fillType private var: String = GradientType. linealidad;
    18. colors : Array = [ 0xFF0000 , 0x00FF00 , 0x0000ff ] ; privado var colors: Array = [0xFF0000, 0x00FF00, 0x0000FF];
    19. alphas : Array = [ 1 , 1 , 1 ] ; privado var alphas: Array = [1, 1, 1];
    20. ratios : Array = [ 0 , 128 , 255 ] ; privado var ratios: Array = [0, 128, 255];
    21. spreadMethod : String = SpreadMethod . PAD ; var spreadMethod privado: String = SpreadMethod. PAD;
    22. matrix : Matrix = new Matrix ( ) ; matriz private var: Matrix = Matrix nuevo ();
    23. erase_shape : Shape ; erase_shape private var: Forma;
    24. draw_shape : Shape ; draw_shape private var: Forma;
    25. bmpd : BitmapData ; bmpd private var: BitmapData;
    26. bmp : Bitmap ; private var bmp: mapa de bits;
    27. interval : uint ; intervalo de private var: uint;
    28. BitmapErase ( ) { BitmapErase la función pública () (
    29. ( ) ; = draw_shape Forma nueva ();
    30. draw_shape ) ; addChild (draw_shape);
    31. ( ) ; = erase_shape Forma nueva ();
    32. ( ) ; = event_spr Sprite nuevo ();
    33. event_spr ) ; addChild (event_spr);
    34. . stageWidth ; = event_spr area_width. etapa. stageWidth;
    35. . stageHeight - 32 ; = event_spr area_height. etapa. stageHeight - 32;
    36. createGradientBox ( area_width , area_height , 1 , 0 , 0 ) ; matriz. createGradientBox (area_width, area_height, 1, 0, 0);
    37. . beginGradientFill ( fillType , colors , alphas , ratios , matrix , spreadMethod ) ; gráficos event_spr.. beginGradientFill (fillType, colores, alphas, ratios, matriz, spreadMethod);
    38. . drawRect ( 0 , 0 , area_width , area_height ) ; gráficos event_spr.. drawRect (0, 0, area_width, area_height);
    39. . endFill ( ) ; gráficos event_spr.. endFill ();
    40. ( MouseEvent . MOUSE_DOWN , _onMouseDown ) ; event_spr. addEventListener (MouseEvent. MOUSE_DOWN, _onMouseDown);
    41. ( MouseEvent . MOUSE_MOVE , _onMouseMove ) ; event_spr. addEventListener (MouseEvent. MOUSE_MOVE, _onMouseMove);
    42. ( MouseEvent . MOUSE_UP , _onMouseUp ) ; event_spr. addEventListener (MouseEvent. MOUSE_UP, _onMouseUp);
    43. ( MouseEvent . MOUSE_OUT , _onMouseUp ) ; event_spr. addEventListener (MouseEvent. MOUSE_OUT, _onMouseUp);
    44. ( event_spr . width , event_spr . height , true , 0 ) ; = bmpd BitmapData nuevo (event_spr. ancho, event_spr. altura, es cierto, 0);
    45. ( bmpd ) ; bmp = Bitmap nuevo (bmpd);
    46. bmp ) ; addChild (bmp);
    47. )
    48. _onMouseDown ( e : MouseEvent ) : void { _onMouseDown private function (e: MouseEvent): void (
    49. / / Debug ( "_onMouseDown");
    50. . lineStyle ( 10 , 0xffffff , 1 ) ; draw_shape. gráficos. lineStyle (10, 0xFFFFFF, 1);
    51. . lineStyle ( 20 , 0xffffff , 1 ) ; erase_shape. gráficos. lineStyle (20, 0xFFFFFF, 1);
    52. . moveTo ( e . localX , e . localY ) ; draw_shape. gráficos. moveTo (elegidos por localX, y. localy);
    53. . moveTo ( e . localX , e . localY ) ; erase_shape. gráficos. moveTo (elegidos por localX, y. localy);
    54. md = true;
    55. )
    56. _onMouseUp ( e : MouseEvent ) : void { _onMouseUp private function (e: MouseEvent): void (
    57. md = false;
    58. . clear ( ) ; draw_shape. gráficos. Clear ();
    59. . clear ( ) ; erase_shape. gráficos. Clear ();
    60. interval ) ; clearInterval (intervalo);
    61. )
    62. _onMouseMove ( e : MouseEvent ) : void { _onMouseMove private function (e: MouseEvent): void (
    63. / / Debug ( "_onMouseMove");
    64. md && ! e . ctrlKey ) { if (MD & &! y. ctrlKey) (
    65. . lineTo ( e . localX , e . localY ) ; draw_shape. gráficos. lineTo (elegidos por localX, y. localy);
    66. drawNow , 1 ) ; intervalo = setInterval (drawNow, 1);
    67. ( md && e . ctrlKey ) { ) Else if (MD & & y. CtrlKey) (
    68. . lineTo ( e . localX , e . localY ) ; erase_shape. gráficos. lineTo (elegidos por localX, y. localy);
    69. . draw ( erase_shape , null , null , "erase" ) ; bmp. BitmapData. empate (erase_shape, null, null, "borrar");
    70. )
    71. )
    72. debug ( v : String ) : void { depuración private function (v: String): void (
    73. : Date = new Date ( ) ; var d: Fecha = Fecha de nuevo ();
    74. d . getMinutes ( ) + ":" + d . getSeconds ( ) + ":" + d . getMilliseconds ( ) + ": " + v ) ; trace (d. getMinutes () + ": getSeconds" + D. () + ": getMilliseconds" + D. () + ":" + v);
    75. )
    76. drawNow ( ) : void { drawNow private function (): void (
    77. . draw ( draw_shape ) ; bmp. BitmapData. empate (draw_shape);
    78. )
    79. )
    80. )

  2. getAvatar 1,0

Deja tu comentario

TAG XHTML RESTRICCIONES: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> código de inserción:
 <pre></pre>         // blocco generico [code][/code]       // blocco generico [as][/as]           // Actionscript [css][/css]         // CSS Style Sheet [html][/html]       // HTML [js][/js]           // Javascript [objc][/objc]       // Objective-C [php][/php]         // PHP [sql][/sql]         // SQL