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
| ... / / Forma no es visible, utilizado para la "cancelación" Shape = new Shape ( ) ; erase_shape var: Forma = new forma (); |
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")..; |
Continuación ...
Como se explica en flash concurso Actionscript: herramienta de borrar no se puede "borrar" un área en particular de un Sprite, MovieClip o la forma en que las líneas o rectángulos se dibuja con el cursor gráfico. Hay, de hecho, el único método clear() , sin embargo, no tiene efecto sobre toda la superficie del objeto. La solución a este problema radica en la posibilidad de utilizar el mapa de bits y objetos BitmapData. Como veremos más adelante podemos acceder directamente y manipular los datos de mapa de bits con el fin de "borrar" golpes con un instrumento real "borrador".
Muestran dos formas diferentes de lograr la "puerta". per esempio. El primer "draw" (borrar) los datos directamente en el BitmapData, usando el método fillRect() - también se puede utilizar setPixel() por ejemplo. El segundo método, la que yo prefiero, utiliza los métodos de las fusiones (blendMode).
En primer lugar vamos a ver qué tipo de organización es el mínimo necesario para lograr un pintor de Flash simple. El esquema que se presenta a continuación se aplica tanto a las propuestas de la "puerta":

He creado tres capas: la primera MovieClip o Sprite, los antecedentes y el trabajo del controlador de eventos (MouseDown, MouseMove y MouseUp). El segundo, el de mapa de bits es nuestro capas principales, una que realmente dibujado de gráficos se aplicarán y en el que la "puerta". , ecc…). La tercera y última capa, la forma, aborda dos cuestiones: la primera es que permite utilizar directamente las funciones proporcionadas por el cursor gráfico (como lineStyle , drawRect() , etc ...). También aumenta el rendimiento en el cuadro de seguimiento, como se explica en detalle a continuación.
Continuación ...
Lo del estado actual: no se gana nada! Aparte de la soberbia - si algo - que han resuelto el problema.
QUEST - APLICACIÓN
Cómo crear una herramienta para borrar, suprimir, borrar, una "porción" de la API de gráficos diseñados con ActionScript 3.0?
, espongono la proprietà graphics , un puntatore ad un altro oggetto che “serve” tutte le funzioni grafiche di disegno runtime. Con ActionScript 3.0 Algunos de los objetos visuales, como MovieClip o Shape , presentan la característica graphics , un puntero a otro objeto que "sirve" todas las funciones de diseño gráfico en tiempo de ejecución. Por ejemplo, usted puede desarrollar una aplicación de dibujo simple. , in modo semplice e rapido. Este objeto graphics puede dibujar lo que quieras, por ejemplo, un objeto de Shape fácil y rápida. El problema es que algo una vez que se extrae se puede limpiar todo, pero una sola parte.
Dibuja una línea es fácil:
1 2 3 4 5 6
| Shape = new Shape ( ) ; myShape var: Forma = new forma (); myShape ) ; addChild (myShape); / / . lineStyle ( 2 , 0xff0000 , 1 ) ; .. myShape gráficos lineStyle (2, 0xFF0000, 1); . moveTo ( 0 , 0 ) ; .. myShape gráficos moveTo (0, 0); . lineTo ( 100 , 100 ) ; .. myShape gráficos lineTo (100, 100); |
Dibujado algo que usted puede limpiar todo con el simple llamada a clear() :
1
| . clear ( ) ; . myShape gráficos claros ().; |
Pero si quiero "eliminar" un solo punto? O las coordenadas de 50,50 a 100.100?
Buscando en Internet encontré varios ejemplos de "aplicaciones de diseño" y, de hecho, no ofrece ningún soporte o herramienta de "eliminar".
¿Tiene alguna solución?
Continuación ...
Para algunos desarrolladores sólo tienen que saber que hay una nueva versión de su paquete de desarrollo preferido para correr y comprar la actualización. Otros, con razón, más tranquilo y mantener una "mentira" para conocer la mejoría real en la nueva versión antes de cambiar sus hábitos. En el caso de Adobe Flash CS3 no hay mucho que esperar, teniendo en cuenta los muchos cambios que el paquete ha sufrido desde Macromedia fue adquirida por Adobe.
Aquí, entonces, 10 razones simples, pero importantes, que, en mi opinión personal, lo suficiente como para convencer a la actualización a Adobe Flash CS3 . Me centraré, por supuesto, sólo en las cosas que me llamó la atención personalmente, esto no pretende ser una lista exhaustiva de todas las muchas innovaciones introducidas por la suite CS3, sólo una mosca para anticipar algunas de las características de CS3.
1. Instalación
La instalación es muy agradable y rápido, en comparación con versiones anteriores. Incluye, entre otras cosas, con todos los productos de Adobe (Dreamweaver CS3, Photoshop CS3 Extended, etc ...) que hace que la instalación / desinstalación y actualización de un verdadero placer.
2. Compatibilidad con versiones anteriores
Un tema a menudo pasado por alto, pero siempre se tiene en cuenta en la historia de Flash: La capacidad de gestionar las versiones anteriores del producto. En Flash CS3 tiene todas las herramientas para manipular es migrar a las versiones anteriores de nuestras películas. Nos encontramos con esta posibilidad en la depuración (depuración de un aparte de ActionScript 2.0 y ActionScript 3.0) se encuentra en proceso de completar la película. Escribir ahora aplicaciones de ActionScript 3.0 de Flash podría ser contraproducente en ciertos contextos. Si su sitio de destino tiene un alto tráfico es posible que muchos usuarios aún no ha instalado la última versión de Flash Player para su navegador y luego no volvería a ver la película. Sin embargo, como se señaló anteriormente, Flash CS3 le permite desarrollar aplicaciones Flash de compatibilidad mantendedo y por lo tanto no veo esto como un producto de gran nell'upgrade ostocalo.
3. GUI y del IDE

El IDE de Flash CS3 (como Dreamweaver CS3) se ha revisado para mejorar. Los paneles (ver foto izquierda), a menudo incómodo en las versiones anteriores, han sido completamente rediseñado y ahora su uso es mucho menos invasiva.
Además, la capacidad de minimizar los paneles (ver figura a la derecha) se encuentra que hace que una interfaz real atractivo y funcional. Cuando un panel está en modo de icono ocupa mucho menos espacio y con un simple clic puede abrir el panel principal en primer lugar siempre visible.
Todos los IDE, en definitiva, ha sido revisada y la zona central con la ventana de edición y el código gráfico. No se señalan todos los cambios o si vas a arruinar la sorpresa ...

Continuación ...
Últimos Comentarios
José : Hola quería preguntar cómo se puede hacer en el post que he subido una galería de 50 imágenes, por ejemplo, ...
José : Consejo, si desea restaurar todas las miniaturas plugin de pulgares Regenerar
José : ¡Gracias! Guía muy interesante.
Giovambattista Fazioli : actualización: WordPress ha actualizado la documentación de esta función.
Giovambattista Fazioli : @ iLeW: por supuesto, ver aquí