Starting with the codes provided in Flash CS3 Create a Paint , and performing minor modifications, can greatly improve the instrument of "erase". Adding a Shape is not visible, you can use it as a "plan" to run the draw() blend mode "erase". As shown in the example below, after drawing something, hold down the Ctrl key and the effect of "cancellation" is now in real time.
The code is as follows - Source :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | . MouseEvent ; import flash.events. MouseEvent ; . BitmapData ; import flash.display. BitmapData ; . Bitmap ; import flash.display. Bitmaps ; . GradientType ; import flash.display. GradientType ; / / . Matrix ; flash.geom imports. Matrix ; / / Boolean = false ; md var: Boolean = false; / / Sprite = new Sprite ( ) ; var event_spr: Sprite = new Sprite (); event_spr ) ; addChild (event_spr); / / Number = event_spr . stage . stageWidth ; var area_width: Number = event_spr. internships. stageWidth; Number = event_spr . stage . stageHeight - 32 ; var area_height: Number = event_spr. internships. stageHeight - 32; / / String = GradientType . LINEAR ; fillType var: String = GradientType . LINEAR; : Array = [ 0xFF0000 , 0x00FF00 , 0x0000ff ] ; var colors: Array = [0xFF0000, 0x00FF00, 0x0000FF]; : Array = [ 1 , 1 , 1 ] ; var alphas: Array = [1, 1, 1]; : Array = [ 0 , 128 , 255 ] ; var ratios: Array = [0, 128, 255]; String = SpreadMethod . PAD ; spreadMethod var: String = SpreadMethod . PAD; : Matrix = new Matrix ( ) ; var matrix: Matrix = new Matrix (); createGradientBox ( area_width , area_height , 1 , 0 , 0 ) ; matrix. createGradientBox (area_width, area_height, 1, 0, 0); / / event_spr . graphics ) { with (event_spr. graphics) { fillType , colors , alphas , ratios , matrix , spreadMethod ) ; beginGradientFill (fillType, colors, alphas, ratios, matrix, spreadMethod); 0 , 0 , area_width , area_height ) ; drawRect (0, 0, area_width, area_height); ; endFill (); } / / Paint event ( MouseEvent . MOUSE_DOWN , _onMouseDown ) ; event_spr. addEventListener ( MouseEvent . MOUSE_DOWN, _onMouseDown); ( MouseEvent . MOUSE_MOVE , _onMouseMove ) ; event_spr. addEventListener ( MouseEvent . MOUSE_MOVE, _onMouseMove); ( MouseEvent . MOUSE_UP , _onMouseUp ) ; event_spr. addEventListener ( MouseEvent . MOUSE_UP, _onMouseUp); ( MouseEvent . MOUSE_OUT , _onMouseUp ) ; event_spr. addEventListener ( MouseEvent . MOUSE_OUT, _onMouseUp); / / BitmapData = new BitmapData ( event_spr . width , event_spr . height , true , 0 ) ; var bmpd: BitmapData = new BitmapData (event_spr. width, event_spr. height, true, 0); Bitmap = new Bitmap ( bmpd ) ; var bmp: Bitmap = new Bitmap (bmpd); bmp ) ; addChild (bmp); / / / / Temporary shape Shape = new Shape ( ) ; var draw_shape: Shape = new Shape (); draw_shape ) ; addChild (draw_shape); / / / / Shape is not visible, used for the "cancellation" Shape = new Shape ( ) ; var erase_shape: Shape = new Shape (); / / e : MouseEvent ) : void { _onMouseDown function (e: MouseEvent ): void { ) ; debug ("_onMouseDown"); . lineStyle ( 10 , 0xffffff , 1 ) ; draw_shape. graphics. lineStyle (10, 0xffffff, 1); . lineStyle ( 20 , 0xffffff , 1 ) ; erase_shape. graphics. lineStyle (20, 0xffffff, 1); . moveTo ( e . localX , e . localY ) ; draw_shape. graphics. moveTo (and. localX, and. localY); . moveTo ( e . localX , e . localY ) ; erase_shape. graphics. moveTo (and. localX, and. localY); md = true; } / / e : MouseEvent ) : void { _onMouseUp function (e: MouseEvent ): void { md = false; . draw ( draw_shape ) ; bmp. bitmapData. draw (draw_shape); . clear ( ) ; draw_shape. graphics. clear (); . clear ( ) ; erase_shape. graphics. clear (); } / / e : MouseEvent ) : void { _onMouseMove function (e: MouseEvent ): void { ) ; debug ("_onMouseMove"); md && ! e . ctrlKey ) { if (md & &! and. ctrlKey) { . lineTo ( e . localX , e . localY ) ; draw_shape. graphics. lineTo (and. localX, and. localY); ( md && e . ctrlKey ) { } Else if (md & & and. CtrlKey) { . lineTo ( e . localX , e . localY ) ; erase_shape. graphics. lineTo (and. localX, and. localY); . draw ( erase_shape , null , null , "erase" ) ; bmp. bitmapData. draw (erase_shape, null, null, "erase"); } } / / v : String ) : void { function debug (v: String ): void { : Date = new Date ( ) ; var d: Date = new Date (); d . getMinutes ( ) + ":" + d . getSeconds ( ) + ":" + d . getMilliseconds ( ) + ": " + v ) ; trace (d. getMinutes () + "" + d. getSeconds () + "" + d. getMilliseconds () + "" + st); } |
): We have added a new Shape, erase_shape not visible (has not been made any addChild() ):
1 2 3 |
The piece of code that takes care of drawing has been introduced for the control key and, if pressed, is interested precisely the Shape erase_shape and copied to the Bitmap:
1 2 3 | .... . lineTo ( e . localX , e . localY ) ; erase_shape. graphics. lineTo (and. localX, and. localY); . draw ( erase_shape , null , null , "erase" ) ; bmp. bitmapData. draw (erase_shape, null, null, "erase"); |







Latest Comments
Mark : @ Mark: Thanks for the answer. For example, if you have a code to save / use the folder ...
Mark : Thanks for the answer. For example, if you have a code to save / use the folder ...
Giovambattista Fazioli : @ Mark: in principle, absolutely, a lot depends on how and what to download. La. ..
Mark : Hello, good guide! I wanted to ask, you can use the same code to run a sql database? Instead of ...
Joseph : Hi I wanted to ask you how you can do in the post I uploaded a gallery of 50 images, for example, ...