A partir de los códigos proporcionados en Flash CS3 Cree una pintura , y la realización de pequeñas modificaciones, puede mejorar el instrumento de "borrar". Cómo añadir una figura no está visible, se puede utilizar como un "plan" para ejecutar el draw() de modo de mezcla "borrar". Como se muestra en el ejemplo siguiente, después de dibujar algo, mantenga pulsada la tecla Ctrl y el efecto de la "anulación" está ahora en tiempo real.
El código es el siguiente - Fuente :
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 ; flash.events de importación. MouseEvent ; . BitmapData ; flash.display importación. BitmapData ; . Bitmap ; flash.display importación. mapas de bits ; . GradientType ; . flash.display importación GradientType ; / / . Matrix ; importaciones flash.geom. Matrix ; / / Boolean = false ; var md: Boolean = false; / / Sprite = new Sprite ( ) ; var event_spr: Sprite = new Sprite (); event_spr ) ; addChild (event_spr); / / Number = event_spr . stage . stageWidth ; var area_width: Número = event_spr prácticas stageWidth,.. Number = event_spr . stage . stageHeight - 32 ; area_height var: Número .. = event_spr prácticas stageHeight - 32; / / String = GradientType . LINEAR ; fillType var: cadena = GradientType . LINEAL; : Array = [ 0xFF0000 , 0x00FF00 , 0x0000ff ] ; var colores: array = [0xFF0000, 0x00FF00, 0x0000FF]; : Array = [ 1 , 1 , 1 ] ; var alphas: array = [1, 1, 1]; : Array = [ 0 , 128 , 255 ] ; var ratios: matriz = [0, 128, 255]; String = SpreadMethod . PAD ; spreadMethod var: cadena = SpreadMethod PAD;. : Matrix = new Matrix ( ) ; var matriz: Matrix = new Matrix (); createGradientBox ( area_width , area_height , 1 , 0 , 0 ) ; . createGradientBox matriz (area_width, area_height, 1, 0, 0); / / event_spr . graphics ) { con (event_spr. gráficos) { fillType , colors , alphas , ratios , matrix , spreadMethod ) ; beginGradientFill (fillType, colores, alfas, las proporciones, la matriz, spreadMethod); 0 , 0 , area_width , area_height ) ; drawRect (0, 0, area_width, area_height); ; endFill (); } / Evento / Pintura ( 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 (ancho event_spr., event_spr altura, 0 verdad.) Bitmap = new Bitmap ( bmpd ) ; var bmp: Bitmap = new Bitmap (bmpd); bmp ) ; addChild (bmp); / / / / Forma temporal Shape = new Shape ( ) ; draw_shape var: Forma = new forma (); draw_shape ) ; addChild (draw_shape); / / / / Forma no es visible, utilizado para la "cancelación" Shape = new Shape ( ) ; erase_shape var: Forma = new forma (); / / e : MouseEvent ) : void { función _onMouseDown (e: MouseEvent ): void { ) ; depuración ("_onMouseDown"); . lineStyle ( 10 , 0xffffff , 1 ) ; .. draw_shape gráficos lineStyle (10, 0xffffff, 1); . lineStyle ( 20 , 0xffffff , 1 ) ; .. erase_shape gráficos lineStyle (20, 0xffffff, 1); . moveTo ( e . localX , e . localY ) ; .. draw_shape gráficos moveTo (and. localX y localY.); . moveTo ( e . localX , e . localY ) ; .. erase_shape gráficos moveTo (and. localX y localY.); md = true; } / / e : MouseEvent ) : void { _onMouseUp función (e: MouseEvent ): void { md = false; . draw ( draw_shape ) ; .. bmp bitmapData empate (draw_shape); . clear ( ) ; . draw_shape gráficos claros ().; . clear ( ) ; . erase_shape gráficos claros ().; } / / e : MouseEvent ) : void { _onMouseMove función (e: MouseEvent ): void { ) ; depuración ("_onMouseMove"); md && ! e . ctrlKey ) { if (md & &! y ctrlKey.) { . lineTo ( e . localX , e . localY ) ; .. draw_shape gráficos lineTo (and. localX y localY.); ( md && e . ctrlKey ) { } Else if (md & & y. CtrlKey) { . lineTo ( e . localX , e . localY ) ; .. erase_shape gráficos lineTo (and. localX y localY.); . draw ( erase_shape , null , null , "erase" ) ; bmp bitmapData empate (erase_shape, null, null, "borrar")..; } } / / v : String ) : void { depuración de la función (v: Cadena ): void { : Date = new Date ( ) ; var d: Fecha = new Date (); d . getMinutes ( ) + ":" + d . getSeconds ( ) + ":" + d . getMilliseconds ( ) + ": " + v ) ; trace (d. getMinutes () + "" + d. getSeconds () + "" + getMilliseconds d. () + "" + st); } |
): Hemos añadido una nueva forma, erase_shape no visible (no se llevó a cabo ninguna addChild() ):
1 2 3 |
La pieza de código que se encarga de la elaboración se ha introducido para la tecla de control y, si se pulsa, se interesa precisamente la forma erase_shape y se copian en el mapa de bits:
1 2 3 | .... . lineTo ( e . localX , e . localY ) ; .. erase_shape gráficos lineTo (and. localX y localY.); . draw ( erase_shape , null , null , "erase" ) ; bmp bitmapData empate (erase_shape, null, null, "borrar")..; |










A las palancas y Mejora en la funcion de ocho kilómetros del Drenaje hizó una Clase.
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
77
78
79
80
81
82
83
84
85
86
87
88
. Sprite ; flash.display importación. Sprite ;
. MouseEvent ; flash.events de importación. MouseEvent ;
. BitmapData ; flash.display importación. BitmapData ;
. Bitmap ; flash.display importación. mapas de bits ;
. GradientType ; . flash.display importación GradientType ;
. SpreadMethod ; flash.display importación. SpreadMethod ;
. Shape ; flash.display importación. Forma ;
. Matrix ; importaciones flash.geom. Matrix ;
. setInterval ; . importaciones flash.utils setInterval;
. clearInterval ; importaciones flash.utils clearInterval.;
BitmapErase extends Sprite { BitmapErase clase public Sprite {
md : Boolean = false ; md private var: Boolean = false;
event_spr : Sprite ; privado event_spr var: Sprite ;
area_width : Number ; var area_width privado: Número ;
area_height : Number ; var area_height privado: Número ;
fillType : String = GradientType . LINEAR ; var fillType privado: Cadena = GradientType . LINEAL;
colors : Array = [ 0xFF0000 , 0x00FF00 , 0x0000ff ] ; privado colores var: matriz = [0xFF0000, 0x00FF00, 0x0000FF];
alphas : Array = [ 1 , 1 , 1 ] ; privado alfas var: matriz = [1, 1, 1];
ratios : Array = [ 0 , 128 , 255 ] ; var relaciones privadas: matriz = [0, 128, 255];
spreadMethod : String = SpreadMethod . PAD ; var spreadMethod privado: Cadena = SpreadMethod . PAD;
matrix : Matrix = new Matrix ( ) ; privado de la matriz var: Matrix = new Matrix ();
erase_shape : Shape ; erase_shape private var: Forma ;
draw_shape : Shape ; draw_shape private var: Forma ;
bmpd : BitmapData ; privado bmpd var: BitmapData ;
bmp : Bitmap ; bmp privado var: mapa de bits ;
interval : uint ; intervalo de private var: uint ;
BitmapErase ( ) { BitmapErase public function () {
( ) ; draw_shape = new forma ();
draw_shape ) ; addChild (draw_shape);
( ) ; erase_shape = new forma ();
( ) ; event_spr = new Sprite ();
event_spr ) ; addChild (event_spr);
. stageWidth ; . area_width = event_spr prácticas stageWidth.;
. stageHeight - 32 ; . area_height = event_spr prácticas stageHeight -. 32,
createGradientBox ( area_width , area_height , 1 , 0 , 0 ) ; . createGradientBox matriz (area_width, area_height, 1, 0, 0);
. beginGradientFill ( fillType , colors , alphas , ratios , matrix , spreadMethod ) ; .. event_spr gráficos beginGradientFill (fillType, colores, alfas, las proporciones, la matriz, spreadMethod);
. drawRect ( 0 , 0 , area_width , area_height ) ; .. event_spr gráficos drawRect (0, 0, area_width, area_height);
. endFill ( ) ; . event_spr gráficos endFill ().;
( 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.);
( event_spr . width , event_spr . height , true , 0 ) ; bmpd = new BitmapData (ancho event_spr., event_spr altura, 0 verdad.)
( bmpd ) ; bmp = new Bitmap (bmpd);
bmp ) ; addChild (bmp);
}
_onMouseDown ( e : MouseEvent ) : void { _onMouseDown private function (e: MouseEvent ): void {
/ / Debug ("_onMouseDown");
. lineStyle ( 10 , 0xffffff , 1 ) ; .. draw_shape gráficos lineStyle (10, 0xffffff, 1);
. lineStyle ( 20 , 0xffffff , 1 ) ; .. erase_shape gráficos lineStyle (20, 0xffffff, 1);
. moveTo ( e . localX , e . localY ) ; .. draw_shape gráficos moveTo (and. localX y localY.);
. moveTo ( e . localX , e . localY ) ; .. erase_shape gráficos moveTo (and. localX y localY.);
md = true;
}
_onMouseUp ( e : MouseEvent ) : void { _onMouseUp private function (e: MouseEvent ): void {
md = false;
. clear ( ) ; . draw_shape gráficos claros ().;
. clear ( ) ; . erase_shape gráficos claros ().;
interval ) ; clearInterval (intervalo);
}
_onMouseMove ( e : MouseEvent ) : void { función _onMouseMove privado (e: MouseEvent ): void {
/ / Debug ("_onMouseMove");
md && ! e . ctrlKey ) { if (md & &! y ctrlKey.) {
. lineTo ( e . localX , e . localY ) ; .. draw_shape gráficos lineTo (and. localX y localY.);
drawNow , 1 ) ; intervalo = setInterval (drawNow, 1);
( md && e . ctrlKey ) { } Else if (md & & y. CtrlKey) {
. lineTo ( e . localX , e . localY ) ; .. erase_shape gráficos lineTo (and. localX y localY.);
. draw ( erase_shape , null , null , "erase" ) ; bmp bitmapData empate (erase_shape, null, null, "borrar")..;
}
}
debug ( v : String ) : void { depuración de la función pública (v: Cadena ): void {
: Date = new Date ( ) ; var d: Fecha = new Date ();
d . getMinutes ( ) + ":" + d . getSeconds ( ) + ":" + d . getMilliseconds ( ) + ": " + v ) ; trace (d. getMinutes () + "" + d. getSeconds () + "" + getMilliseconds d. () + "" + st);
}
drawNow ( ) : void { drawNow función privada (): void {
. draw ( draw_shape ) ; .. bmp bitmapData empate (draw_shape);
}
}
}
@ Julio: buenas!
Esto es totalmente increíble! Gran trabajo. ¿Es posible tener lo mismo que a excepción aquí es borrar un clip de película expone la imagen de fondo por debajo de ella?
Esto es totalmente increíble! Gran trabajo. Usted puede tener la misma cosa aquí, excepto que está borrando un clip de la película que expone la imagen de fondo?