Artículos con la etiqueta 'Tutoriales'


Pintura Flash CS3: verdadera herramienta de borrar el tiempo

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.

Cargando flash ...

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 ...

Pintura para crear una aplicación en Flash CS3

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":

patrón de mapa de bits

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 ...

Pintura-o-matic

Para completar, en relación con la pintura Flash CS3: efectos de la matriz de matrices quiero hacer hincapié en que la Matrix no es necesario que el comportamiento se indica en el post anterior. De hecho vemos en el ejemplo siguiente:

Cargando flash ...

El código es un poco diferente de la anterior, es el siguiente:

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
/ *
** Código Actionscript 2.0
* /
. MouseEvent ; flash.events de importación. MouseEvent ;
. Matrix ; importaciones flash.geom. Matrix ;
/ / Bandera para detectar la mousedown
Boolean = false ; var md: Boolean = false;
/ / Crear un frente de la pizarra
Sprite = new Sprite ( ) ; var lvg1: Sprite = new Sprite ();
. lineStyle ( 0 , 0xffffff ) ; . lvg1 gráficos lineStyle (0, 0xFFFFFF).;
. beginFill ( 0x666666 ) ; .. lvg1 gráficos beginFill (0x666666);
. drawRect ( 0 , 0 , 199 , 199 ) ; .. lvg1 gráficos drawRect (0, 0, 199, 199);
. endFill ( ) ; lvg1 gráficos endFill ()..;
lvg1 ) ; addChild (lvg1);
= lvg1 . y = 30 ; lvg1 lvg1 x =. y = 30.;
/ / Crear la tabla inclinada
Sprite = new Sprite ( ) ; var lvg2: Sprite = new Sprite ();
. lineStyle ( 0 , 0xffffff ) ; . lvg2 gráficos lineStyle (0, 0xFFFFFF).;
. beginFill ( 0x666666 ) ; .. lvg2 gráficos beginFill (0x666666);
. drawRect ( 0 , 0 , 199 , 199 ) ; .. lvg2 gráficos drawRect (0, 0, 199, 199);
. endFill ( ) ; lvg2 gráficos endFill ()..;
= 400 ; lvg2 x = 400.;
= lvg1 . y ; lvg2 y = lvg1 y..;
= 45 ; . lvg2 rotación = 45;
= lvg2 . scaleY = . 6 ; lvg2 scaleX scaleY lvg2 =. 6..;
lvg2 ) ; addChild (lvg2);
/ /
/ Evento / Pintura
( MouseEvent . MOUSE_DOWN , _onMouseDown ) ; . lvg1 addEventListener ( MouseEvent MOUSE_DOWN, _onMouseDown.);
( MouseEvent . MOUSE_MOVE , _onMouseMove ) ; . lvg1 addEventListener ( MouseEvent MOUSE_MOVE, _onMouseMove.);
( MouseEvent . MOUSE_UP , _onMouseUp ) ; . lvg1 addEventListener ( MouseEvent MOUSE_UP, _onMouseUp.);
/ /
e : MouseEvent ) : void { función _onMouseDown (e: MouseEvent ): void {
"_onMouseDown" ) ; trace ("_onMouseDown");
: uint = 0xffffff ; var c: uint = 0xFFFFFF;
. graphics . lineStyle ( 10 , c , 1 ) ; ... y el objetivo de gráficos lineStyle (10, c, 1);
. lineStyle ( 10 , c , 1 ) ; .. lvg2 gráficos lineStyle (10, c, 1);
. graphics . moveTo ( e . localX , e . localY ) ; .. y el objetivo de gráficos moveTo (and. localX y localY)..;
. moveTo ( e . localX , e . localY ) ; .. lvg2 gráficos moveTo (and. localX y localY.);
md = true;
}
/ /
e : MouseEvent ) : void { md = false ; } _onMouseUp función (e: MouseEvent ): void {md = false;}
/ /
e : MouseEvent ) : void { _onMouseMove función (e: MouseEvent ): void {
"_onMouseMove" ) ; trace ("_onMouseMove");
md ) { if (md) {
. graphics . lineTo ( e . localX , e . localY ) ; . y el objetivo de gráficos lineTo (and. localX y localY)...;
. lineTo ( e . localX , e . localY ) ; .. lvg2 gráficos lineTo (and. localX y localY.);
}
}

En este caso, las líneas 22 y 25 muestran que incluso con una simple rotación y el efecto de desplazamiento se repite.

Continuación ...

Pintura Flash CS3: efectos de la matriz de matrices

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 ...

Crear un botón con Photoshop fotorrealista

wg1

Botón de calidad fotográfica con Photoshop Hoy estoy de humor para consejos gráficos! Vamos a ver, paso a paso, cómo hacer una llave (un teclado) con realismo fotográfico Photoshop.

Continuación ...

Google Maps componente de Flash

AFComponents UMAP

Google ha API - Javascript - para poner sus mapas en cualquier sitio web se disputaban la forma de hacer lo mismo con Flash.!

imagen Partimos de un componente gratuito, UMAP (Universal ActionScript 3.0 Asignación de API - Integración con Google Maps), desarrollado por AFComponents , una empresa verticalmente organizadas de componentes para Flash / Flex realmente interesante y asequible. En el sitio, donde es necesario registrarse para tomar ventaja de las descargas gratuitas, también hay versiones de UMAP para ActionScript 2.0: MAP G Ver.2.6.1 . En este caso vamos a analizar la versión 0.4 Beta UMAP para ActionScript 3.0 (dentro del paquete hay también un componente de Flex). Que vamos a ver es - obviamente - una versión beta y carece, por lo tanto, algunas características en la versión de ActionScript 2.0 ( G Ver.2.6.1 MAPA ). Sin embargo, el vigilante en el futuro, parece más interesante centrar la atención en esta versión, he probado las dos y, a pesar de la liberación de los más completo para ActionScript 2.0, ActionScript 3.0 versión beta es mucho más potente.

Continuación ...

Las nuevas herramientas de Adobe Photoshop CS3 Extended

Adobe Photoshop CS3 Extended

Los afortunados que yo, para tener el nuevo Adobe Photoshop CS3 - Versión extendida - que será "grogiolato" para ver todas las noticias de esta nueva versión. Entre las muchas características nuevas en la versión 10.0.1 dos en particular me llamó la atención por su gran utilidad. La primera es la herramienta de selección rápida:

imagen

Esto permite, por ejemplo, "cortar" un objeto en un archivo. Sencillo y eficaz Una vez seleccionado, simplemente haga clic en la imagen que captura y el resto lo es. Usted puede, durante este proceso, eliminar todas las selecciones que no nos satisfacen, por lo general con la tecla Alt (en Windows - el utilizado para la cuota elimnare selección con otras herramientas). Por otra parte, en la barra de herramientas superior, se puede ajustar el ancho del "cepillo" de la selección, hasta llegar a trabajar píxel a píxel.

Esta característica se acopla a la perfección con la segunda característica nueva en Adobe Photoshop CS3 : Perfeccionar borde, que es accesible desde el menú de selección (Alt + Ctrl + R).

Perfeccionar borde

Teniendo en cuenta una selección, esta herramienta le permite realizar una serie de pasos muy útil e interesante, con un trmite previsualización en tiempo real ajustable esas imágenes que usted ve en la parte inferior de la ventana de arriba. Además de ser útil para mejorar las operaciones en los bordes y la selección de curvas de nivel, también le permite hacer los arreglos de imágenes simples, como el que se muestra a continuación:

Perfeccionar borde

Desde la materia prima y "cuadrado" la imagen de la izquierda, mediante el uso de Refine Edge ha llegado en un momento la figura de la derecha.

Ver Vídeo

Continuación ...

Flash CS3: El manejo de eventos nuevos

Finalmente con ActionScript 3.0 ya no tienen dos de gestión distinta de los hechos como lo hacían antes de ActionScript 2.0 (ver: La gestión de eventos: semejanzas entre Flash y Javascript ). El método addEventListener() , omnipresente en la nueva arquitectura permite la gestión de nuevos y excepcionalmente limpio todos los eventos posibles, incluso las personales. La nueva organización en el paquete le permite importar los eventos que servimos y tratar a todos por igual:

1
2
3
4
/ / Eventos
. KeyboardEvent ; flash.events de importación. KeyboardEvent ;
. MouseEvent ; flash.events de importación. MouseEvent ;
. Event ; flash.events de importación. Evento ;

Continuación ...

Flash CS3: TextField.appendText ()

Flash CS3 tiene muchas innovaciones, entre ellos el "curioso" para indicar en el momento de la compilación de algunos consejos sobre cómo escribir código. Esto sucede, por ejemplo, cuando se trata de objetos TextField . He tenido que añadir una cadena al final de un campo TextField con la notación clásica:

1
+ = "Stringa aggiunta" ; . mioTextField_txt texto + = "cadena agregó que";

Pero aquí es que ActionScript 3.0, al terminar la película, me sentí (advertencia) - o recomendados:

Advertencia: 3551: Agregar texto a un TextField con + = es mucho más lento que usar el método TextField.appendText ().

Cool! Vamos a ver el hecho de que la SINOPSIS método appendText() en realidad dice:

) applicata a una proprietà text (ad esempio <strong>someTextField.text += moreText</strong> ), in particolare nel caso di un campo di testo con una quantità di contenuto significativa. Añade la cadena especificada por newText al final del campo de texto. Este método es más eficiente que una asignación de suma ( += ) las propiedades se aplica a un text (por ejemplo, <strong>someTextField.text += moreText</strong> ), en particular en el caso de un campo de texto con una cantidad significativa de contenido.

Confiamos? Para verificar la seguridad:

1
2
3
4
5
6
7
8
9
. getTimer ; importaciones flash.utils getTimer.;

uint = 0 ; var i: uint = 0;
int = getTimer ( ) ; var s: int = getTimer ();
i ; i < 10000 ; i ++ ) { for (i, i <10000; i + +) {
+ = "Ciao" ; text_txt + text = "Hola".;
}
int = getTimer ( ) ; var f: int = getTimer ();
f - s ) ; trace (f - s);

Tiempo: 9360 - en mi máquina en modo de depuración. Vamos a tratar según lo aconsejado por el compilador:

1
2
3
4
5
6
7
8
9
. getTimer ; importaciones flash.utils getTimer.;

uint = 0 ; var i: uint = 0;
int = getTimer ( ) ; var s: int = getTimer ();
i ; i < 10000 ; i ++ ) { for (i, i <10000; i + +) {
( "Ciao" ) ; . text_txt appendText ("Hello");
}
int = getTimer ( ) ; var f: int = getTimer ();
f - s ) ; trace (f - s);

Tiempo: 8415 ;)

Nada del otro mundo ... pero es la verdad! ). El método appendText() es más rápido y el operador de pre-incremento más potente ( += ). ¿Por qué? La razón más obvia es la siguiente: el operador ( += ) funciona en cualquier tipo de datos. Por otra parte, en un lenguaje orientado a este operador no está estructurado como en C, pero no es más que un "objeto". En C + +, por ejemplo, puede sobrescribir (anular) el operador como parte de la estructura de la lengua objeto en sí mismo. En última instancia appendText() es más rápido porque su objetivo es "colgar" una cadena y por lo tanto no hace muchas "preguntas" en ella. El operador ( += ), sin embargo, debería funcionar para cualquier tipo de datos y por lo tanto no está optimizada para las cadenas. En C, por el contrario, el operador ( += ) es una función de bajo nivel y siempre será más rápido que una llamada a una función.

Continuación ...

Flash CS3: la comunicación con un servidor Web

ActionScript 3.0 introduce una serie de herramientas formidables de comunicación, algunos totalmente nuevos, algunos revisado y mejorado respecto a versiones anteriores de ActionScript. Empezamos a ver cómo cambia la forma de interactuar con un servidor Web en el caso de una simple comunicación entre Flash y una página PHP con la respuesta XML. En primer lugar, el objeto XML ya no existe! ActionScript 3.0 introduce nuevas clases han sido algunas de las cuales se dedican a la "compatibilidad".

Nota: La clase XML (junto con las clases relacionadas) de ActionScript 2.0 han cambiado de nombre y se mudó a XMLDocument el paquete flash.xml. Se incluye en ActionScript 3.0 para asegurar la compatibilidad con versiones anteriores.

usando il metodo sendAndLoad() dell'oggetto LoadVars (vedi: Flash: LoadVars e XML per inviare dati in POST ). En ActionScript 2.0 la comunicación con un servidor Web se resuelve a menudo mediante el uso de la combinación de objetos LoadVars y XML, utilizando el método de sendAndLoad() objeto LoadVars (ver: Flash: LoadVars y XML para enviar datos en POST ). Ahora las cosas están cambiando, pero que acaba de acostumbrarse a los nuevos nombres y objetos. Como se indica en el manual, de hecho:

Continuación ...