'Tutoriales' Categoría
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:
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 ...
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 ...

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 ha API - Javascript - para poner sus mapas en cualquier sitio web se disputaban la forma de hacer lo mismo con Flash.!
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 ...
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:

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

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:

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 ...
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:
Continuación ...
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 ...
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 ...
Algunos lectores me han preguntado cómo fue creado el copo de nieve, tan realista, la Navidad Widget . Los que han descargado el código fuente usted probablemente ya sabe ... pero fue muy simple. En primer lugar, selecciona la herramienta Pincel en Flash y me dibujó un punto.
Yo la convirtieron en un símbolo y me presenté dos efectos en el orden correcto: cónico y borroso:
El resultado fue: 
En este clip de película (símbolo) asociado a una clase simple que CNeve , que en realidad crea la inteligencia de la propia básicos:
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
| MovieClip { Cneve clase amplía MovieClip { _interval ; _interval var privado; _maxy : Number ; var _maxy privado: Número ; / / Cneve función () { this , "_move" , 25 ) ; _interval = setInterval (this, "_move", 25); round ( ( Stage . height + 256 ) / 2 ) + _getRndRange ( - 20 , - 7 ) ; _maxy = Matemáticas . round (( Etapa de altura + 256) / 2.) + _getRndRange (- 20, - 7); } / / _getRndRange ( min : Number , max : Number ) : Number { _getRndRange función privada (min: Número , max: Número ): Número { Number = Math . floor ( Math . random ( ) * ( max - min + 1 ) ) + min ; randomNum var: Número = Matemáticas . piso ( Matemáticas . random () * (max - min + 1)) + min; randomNum retorno; } / / _move ( ) { _move private function () { 1 , 5 ) ; _getRndRange _y + = (1, 5); _getRndRange ( - 50 , 50 ) ) > 0 ) ? 1 : - 1 ; _x + = ((_getRndRange (- 50, 50))> 0) 1: - 1; 1 , 5 ) ; _rotation _getRndRange + = (1, 5); _y > _maxy ) { if (_y> _maxy) { _interval ) ; clearInterval (_interval); } ; updateAfterEvent (); } } |
El método _move() contiene la inteligencia de la grapa, que es la función de una caída, muy simple. Mediante la variación de la función aleatoria _x += ((_getRndRange(-50, 50))>0) ? 1 : -1;, si può aggiungere un effetto effetto vento, cioè i fiocchi cadono con una pendenza particolare. _x += ((_getRndRange(-50, 50))>0) ? 1 : -1;, por ejemplo, mediante la inserción de un _getRndRange(-550, 50), se puede añadir un efecto de viento efecto, que los copos caen con una inclinación particular. En particular, las escamas pueden ser enviados a la derecha y la izquierda con un código como este:
1
| _getRndRange ( _getRndRange ( - 350 , - 50 ) , _getRndRange ( 50 , 350 ) ) ) > 0 ) ? 1 : - 1 ; _x + = ((_getRndRange (_getRndRange (- 350, - 50), _getRndRange (50, 350)))> 0) 1: - 1; |
La rotación ( _rotation += _getRndRange(1, 5); ), esto da un detalle de la misma proa.
e uno scale randomico, per avere fiocchi di neve di diverse dimensioni. Cuando creo un arco (ver la función creaFiocco() más abajo) También he añadido un alpha=90 escaleras y al azar una, para que los copos de nieve de diferentes tamaños.
1 2 3 4 5 6 7 8 9 10 11 12
| / / Crear básico creaFiocco función () { 20 , 100 ) ; randrange var s = (20, 100); = randRange ( - Math . floor ( ( Stage . width - 320 ) / 2 ) , Math . round ( ( Stage . width + 320 ) / 2 ) ) ; randrange var x = (- Matemáticas piso ((. Etapa de ancho - 320) / 2),. Matemáticas round ((. Etapa ancho + 320) / 2).) = - Math . floor ( ( ( Stage . height - 256 ) / 2 ) ) - 10 ; var = y - Matemáticas piso (((. Etapa de altura - 256) / 2).) - 10; "neve" , "neve_" + index , index , { _x : x , _y : y , _xscale : s , _yscale : s , _alpha : 90 } ) ; . c_mc attachMovie ("nieve", "neve_" + index, índice, {_x: x, _y: y, _xscale: s, _yscale: s, _alpha: 90}); indice + +; index > 1000 ) { if (index> 1000) { ; index = 1; , 2 ) ; c_mc = createEmptyMovieClip ("c_mc", 2); } } |
Y eso es todo ...
Me olvidé ... ¡Felices fiestas y mis mejores deseos a todos ... 
Continuación ...
¿Cómo puede un modo de TextField entrada discapacitados Desde la propiedad enabled no está disponible se puede utilizar un artificio simple: el cambio de estado en tiempo de ejecución del campo de texto. Afortunadamente, los desarrolladores de Flash pueden cambiar el estado de un TextField también pasan por la propiedad type . De ello se desprende que si un TextField se añade al escenario como entrada (y por lo tanto, type="input" ), por código, lo podemos convertir en un texto "estático". En realidad, el convertirlos en texto dinámico ( type="dynamic" ), pero el resultado visual es el mismo. El artificio funciona porque tanto la entrada de TextField TextField las propiedades dinámicas comparten el mismo text . Así que si pongo un texto en una entrada TextField cuando se transforma en un objeto dynamic TextField sólo tendrán la impresión de no ser capaz de insertar caracteres! Que me ha desactivado la entrada TextField!
El objeto TextField también se puede extender como un clip de película, entonces podemos utilizar el siguiente código de utilidad:
1 2 3
| prototype . Enabled = function ( v : Boolean ) { TextField . prototipo de función Activado = (v:. Boolean ) { type = v ? "input" : "dynamic" ; .? este tipo v = "entrada": "dinámico"; }; |
Continuación ...
Últimos Comentarios
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 ...
Giovambattista Fazioli : @ Simon: Yo recomiendo la limpieza de ingresar un código como el de ...
Simon : @ Giovambattista Fazioli: Gracias por su paciencia, todo está claro ... ahora me siento ahora, ...