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 18a 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 ...
Jugando con el objeto potente y versátil Matrix (matriz), ligado a los cambios, se pueden hacer cosas extrañas. Estas herramientas se utilizan para aplicar transformaciones especiales a un objeto visual, como un Sprite. Puede, por ejemplo, escalar, rotar o girar (inclinación) un Sprite. e rotation ), per l'effetto Skew bisogna ricorrere direttamente alle matrici. Mientras las dos primeras funciones (escala y rotación) los objetos Sprite (no sólo) Poner a disposición directa de las propiedades ( scaleX / scaleY y rotation ), el efecto de sesgo debe apelar directamente a las matrices. Lo que me gustaría destacar aquí es que cuando se modifica un objeto gráfico todas sus coordenadas internas se mueven:
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
Giovambattista Fazioli : @ Barbara: Si te refieres a la parte inferior para empezar a escribir lo que depende de dónde ...
Barbara : Hola, es muy interesante, pero ¿cómo se escribe en la parte inferior en lugar de lo anterior? Gracias
Simon : Se molesta perturbado de nuevo y utilizar ese espacio para estas cosas ... sin embargo, no funciona ...
Giovambattista Fazioli : @ Simon: ¿qué puede ser debido a la sintaxis que utiliza, específicamente para PHP 5 +,...
Simon : He probado la noche anterior poner todo en functions.php, formas bien, jQuery, y las fichas que jQueryUI ...