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.
El código es el siguiente - fuente:
- / /
- / /
- / /
- event_spr ) ; addChild (event_spr);
- / /
- / /
- createGradientBox ( area_width , area_height , 1 , 0 , 0 ) ; matriz. createGradientBox (area_width, area_height, 1, 0, 0);
- / /
- event_spr . graphics ) { con (event_spr. gráficos) (
- fillType , colors , alphas , ratios , matrix , spreadMethod ) ; (beginGradientFill fillType, colores, alphas, ratios, matriz, spreadMethod);
- 0 , 0 , area_width , area_height ) ; drawRect (0, 0, area_width, area_height);
- ; endFill ();
- )
- / / Evento Paint
- ( 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 ) ; bmpd var: BitmapData = BitmapData nuevo (event_spr. ancho, event_spr. altura, es cierto, 0);
- bmp ) ; addChild (bmp);
- / /
- / / Forma temporal
- draw_shape ) ; addChild (draw_shape);
- / /
- / / Forma, no visible, utilizado para la cancelación de la ""
- / /
- ) ; 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 (elegidos por localX, y. localy);
- . moveTo ( e . localX , e . localY ) ; erase_shape. gráficos. moveTo (elegidos por localX, y. localy);
- md = true;
- )
- / /
- md = false;
- . draw ( draw_shape ) ; bmp. BitmapData. empate (draw_shape);
- . clear ( ) ; draw_shape. gráficos. Clear ();
- . clear ( ) ; erase_shape. gráficos. Clear ();
- )
- / /
- ) ; debug ( "_onMouseMove");
- md && ! e . ctrlKey ) { if (MD & &! y. ctrlKey) (
- . lineTo ( e . localX , e . localY ) ; draw_shape. gráficos. lineTo (elegidos por localX, y. localy);
- ( md && e . ctrlKey ) { ) Else if (MD & & y. CtrlKey) (
- . lineTo ( e . localX , e . localY ) ; erase_shape. gráficos. lineTo (elegidos por localX, y. localy);
- . draw ( erase_shape , null , null , "erase" ) ; bmp. BitmapData. empate (erase_shape, null, null, "borrar");
- )
- )
- / /
- d . getMinutes ( ) + ":" + d . getSeconds ( ) + ":" + d . getMilliseconds ( ) + ": " + v ) ; trace (d. getMinutes () + ": getSeconds" + D. () + ": getMilliseconds" + D. () + ":" + v);
- )
Ha añadido una nueva forma, erase_shape no visible (no se ha hecho ningún addChild()
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:
- ....
- . lineTo ( e . localX , e . localY ) ; erase_shape. gráficos. lineTo (elegidos por localX, y. localy);
- . draw ( erase_shape , null , null , "erase" ) ; bmp. BitmapData. empate (erase_shape, null, null, "borrar");













Una palanca de Mejora en la Función y drenaje de la Hizo una clase mí.
@ Greg: bueno!