'Tutoriales' Categoría


Crear modal MovieClip TopMost

di Flash. Ilustran una técnica para crear símbolos (MovieClip) componentes modales para ser utilizado de manera similar a la Alert y la Window de Flash Player. El objetivo es mostrar un clip de película por encima de todos, desactivar - y - el acceso a la base y cualquier otro presente objeto / componente. Para ser honesto he conseguido que al hacer un poco de ingeniería inversa del código de Adobe, que está en el claro! De hecho, me resistía ;)

El artefizio que se utiliza para desactivar todas las interfaces actuales por debajo de nuestro clip de película, es crear un clip de película transparente de tomar toda el área del escenario. a false . En este clip de película, que será visible prácticamente no quede un método de "vacío" en el evento onRelease , teniendo cuidado de establecer el useHandCursor de false .

Primero de todo, crear una película con cualquier interfaz en el escenario principal:

Interfaz

Continuación ...

Agregar propiedades de un clip de película

En el post de extender MovieClip en Flash MX tenía una idea de extender un clip de película. En particular, me dijo que el uso de MovieClip.prototype no permite la extensión de sus métodos, pero sólo:

[...] Dos importantes limitaciones de esta técnica son:

  1. No se puede aplicar a todos los objetos expuestos en Flash
  2. Pueden ser ", agregó" sólo los métodos y propiedades no [...]

De hecho, es posible, con un paso adicional, incluso cuando se utiliza de forma dinámica las propiedades añadir MovieClip.prototype . , infatti, Flash permetteva l'aggiunta di proprietà (in lettura/scrittura o solo lettura) tramite il metodo addProperty() . Antes de la introducción de la function get y function set , de hecho, permite la adición de las propiedades de Flash (lectura / escritura o sólo lectura) a través de la addProperty() . En la práctica esto se traduce en la invocación del método addProperty() y la definición de dos captadores y definidores. El armador puede ser null con el fin de crear propiedad de sólo lectura. Por ejemplo si quisiéramos extender MovieClip con todas las propiedades nuevas _alpha puede agregar animación, acaba de escribir el siguiente código:

1
2
3
4
5
6
7
: Number { función _get_alpha (): Número {
this . _alpha ) ; retorno (this. _alpha);
}
v : Number ) : Void { _set_alpha función (v: Número ): Void {
this , "_alpha" , Strong . easeOut , this . _alpha , v , 1 , true ) ; nueva Tween (this, "_alpha", easeOut fuerte, este _alpha, v, 1, es verdad..);
}
prototype . addProperty ( "_alpha_tween" , _get_alpha , _set_alpha ) ; MovieClip .. addProperty prototipo ("_alpha_tween" _get_alpha, _set_alpha);

A partir de ahora, si tenemos un símbolo "miosimbolo_mc" Podemos aprovechar esta nueva propiedad:

1
; miosimbolo_mc _alpha_tween = 50.;

. ¿Qué se puede hacer en su lugar, es sobrescribir las propiedades existentes, por lo que he usado _alpha_tween lugar de _alpha . Aquí, entonces, una buena razón para seguir utilizando la versión 2.0 de clases para ampliar - y el resultado - cualquier MovieClip.

Continuación ...

Películas de tamaño variable de inflamación: Acto II

Volviendo a la Nota de Clase StageExt: cine puede cambiar el tamaño de Flash aquí es más fácil de conseguir el mismo efecto, sólo si la biblioteca de nuestra película por lo menos un componente de Flash!

Crear un símbolo, un cuadrado rojo de 100 × 100 y lo puso en etapas llamadas resizeWindow. Entrar en la biblioteca, no en el escenario, cualquiera de los componentes, como un TextInput, e introduzca el siguiente código en el primer fotograma de la película.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
managers . SystemManager ; . mx importación gerentes SystemManager.;
/ /
scaleMode = "noscale" Pasantías . scaleMode = "noScale"
/ /
/ / SystemManager.init ();
( "resize" , resizeWindow ) ; . SystemManager addEventListener ("resize", resizeWindow);
/ /
= function ( Void ) : Void { . resizeWindow tamaño = function (Void): Void {
Object = SystemManager . screen ; var s: Objeto . = SystemManager pantalla;
_width = s . width ; . esta _width = s. de ancho;
_height = s . height ; este _height = s. altura.;
_x = Math . round ( s . x ) ; . esta _x = Matemáticas . ronda (s. X);
_y = Math . round ( s . y ) ; . _y = esta Matemáticas . ronda (s. y);
}
( ) ; resizeWindow resize ().;

La línea 6 (SystemManager.init ();) se puede omitir.

Continuación ...

Flash: cómo inicializar componentes en el constructor de una clase

Cuando estent una clase de un clip de película que contiene otros objetos (MovieClip, TextField, etc ...) no puede ser "listo" en el constructor. Esto sucede especialmente cuando se utilizan componentes MovieClip otros o ampliado (controles) de Flash. Para resolver el problema sólo tiene que utilizar el evento onLoad heredado de la clase misma. Por ejemplo, imagine que tiene un clip de película que contiene un TextField (interna objeto estático visual en Flash) y un objeto TextInput (inserta los componentes del panel de control) y desea establecer una propiedad en el constructor de nuestra clase MyClass.

Ejemplo Creamos un símbolo e insertar en el interior del objeto TextField (llamémosle text_txt) es el objeto TextInput (textinput_txt). Asociamos este símbolo para una clase que amplía MovieClip, llame a nuestra clase MyClass. Lo que tenemos es que durante el constructor de nuestra clase MyClass estos dos controles se inicializan. Si tratamos de usar un código como este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/ /
controls . TextInput ; importación mx controles TextInput..;
/ /
MovieClip { clase MyClass se extiende MovieClip {
/ /
text_txt : TextField ; privado text_txt var: TextField ;
textinput_txt : TextInput ; privado textinput_txt var: TextInput;
/ /
MyClass function () {
"MiaClasse::costruttore" ) ; trace ("MyClass:: constructor");
/ /
= "Ciao" ; . text_txt text = "Hola";
= "Ciao" ; . textinput_txt text = "Hola";
/ /
}

}

Continuación ...

Flash a pantalla completa en el navegador

Flash siempre ha apoyado la pantalla completa (full screen) y en el reproductor independiente al proyector. Este modo sigue siendo totalmente compatible y no ha cambiado. En su lugar Adobe ha introducido recientemente la posibilidad de activar directamente las películas a pantalla completa aparece en el navegador. Hemos introducido una función de ActionScript y sencilla que funciona tanto con los reproductores autónomos jugador con el navegador. ed <embed> . Para hacer el fuzionante pantalla completa debe operar HTML lado, añadiendo un nuevo parámetro allowFullScreen en TAG <object> y <embed> . Todo lo demás queda en el motor interno de Flash.
Esta nueva característica aún tiene algunas restricciones que usted debe saber, en primer lugar el uso de la versión de Flash Player 9.0.28.0 o superior. Por otra parte, en resumen:

  • Navegador debe estar instalado en la versión del Player 9.0.28.0 o superior
  • e <embed> . El desarrollador debe añadir un nuevo parámetro allowFullScreen etiqueta en <object> y <embed> . Este parámetro se sitúa normalmente en false y no permite a pantalla completa. Para activar la pantalla completa de forma explícita que se establece en true .
  • Un cuadro de diálogo se muestra al entrar en modo de pantalla completa y le dirá cómo salir de ese modo. Este cuadro será visible durante unos segundos, tras lo cual desaparecerá por sí mismo.
  • La activación de la pantalla completa de ActionScript sólo puede ser en respuesta a un clic del ratón o la pulsación de un botón, cualquier otro modo se tendrá en cuenta en ActionScript 2.0 y desencadenar una excepción throw en ActionScript 3.0.
  • Durante el modo de pantalla completa no se puede usar el teclado. El usuario final no puede introducir o editar texto. La única respuesta que se da a la combinación de teclas utilizada para salir del modo de pantalla completa (pulsando ESC )

ActionScript

El código necesario para configurar la pantalla completa es muy sencillo y utiliza el objeto Stage discutido en este blog StageExt clase: películas flash de tamaño variable :

1
"displayState" ] = "fullScreen" ; Etapa ["displayState"] = "fullScreen";

Continuación ...

MagicLetter flash de clase: Una clase para la escritura mágica

Según lo prometido aquí está la versión actualizada del efecto de la magia simpática por escrito. He hecho una animación diferente de la "letra", para mostrar cómo los efectos que usted puede hacer. El código fuente completo se puede descargar aquí .

Cargando flash ...

Clase MagicLetter

Este es el código de la clase, por supuesto, se pueden modificar y mejorar. Por ejemplo, puede introducir un Supprot analizar un símbolo de la "nueva línea", para envolver las palabras. Se pueden introducir funciones de obtener y establecer algunas propiedades de exportar fuera, y mucho más.

Continuación ...

Escrito en un instante mágico

Esto que propongo es un artículo que escribí en agosto de 2003 (título original: la magia escrito en Flash MX). A pesar de ser "viejo" (ahora que haría uso de un ActionScript diferentes), creo que es una buena herramienta para llevar a cabo realmente encantadora. Proponer más adelante, o usted, la versión actualizada con el uso de las clases ...

Dinámica MovieClip

El elemento que juega un papel clave nell'architetura flash objeto MovieClip. La capacidad de crear objetos de este tipo de código ofrece un notable potencial de Flash, por lo que es un entorno de desarrollo decente realmente divertido. Con la posibilidad de agregar en tiempo de ejecución de objetos MovieClip tipo, vamos a ver lo fácil que es conseguir el efecto se muestra en la Figura 1.

Cargando flash ...

Figura 1 - Ejemplo de efecto de texto

La clase MagicText_class

Puesto que estamos utilizando la última versión de Flash MX, hacemos las cosas bien y crear una clase MagicText_class ser reutilizados en la voluntad. Lo que estamos haciendo es definir una nueva clase MagicText_class , que hereda todas las características de una clase MovieClip. De esta manera se tendría un objeto real, y luego crear las bases para un verdadero componente de Flash! Si deseamos. Por ahora vamos a detenernos solamente en nuestra clase y ver cómo construirla.

Continuación ...

Extender MovieClip en Flash MX

Puedo utilizar dos técnicas para ampliar la funcionalidad de un clip de película. La primera, que se utiliza en las versiones anteriores de Flash MX, que se utiliza la propiedad prototype , un puntero a la superclase (padre), como se indica en el manual:

Una referencia a la superclase de una clase u objeto de función. La propiedad   prototype se crea automáticamente y se asocia a cualquier clase de objeto o función creada. Esta propiedad es estática y es específico de la clase o la función de crear. Si, por ejemplo, crear una clase personalizada, el valor de la propiedad   prototype es compartida por todas las instancias de la clase y es accesible sólo como una propiedad de clase. . Las instancias de la clase personalizada no puede acceder directamente a la propiedad prototype , pero se puede acceder a través de la propiedad __proto__ .

Una de las ventajas de utilizar prototype , sobre todo con el MovieClip MovieClip reside en la extensión de todo, ninguno marcó. De hecho, se hace una extensión a todas las transmisiones MovieClip estática o dinámica. Por ejemplo, una extensión conveniente podría ser:

1
2
3
prototype . move = function ( x : Number , y : Number ) { MovieClip .. prototipo mover = function (x: Número , y: Número ) {
_x = x ; this . _y = y ; . esta _x = x;. _y = y este;
}

Continuación ...

Clase StageExt: películas flash de tamaño variable

La técnica de tamaño natural (salón de pantalla completa - de los cuales más tarde) era, hasta hace poco, se utilizan principalmente en aplicaciones Flash (RIA), lo hizo por una interfaz de usuario más o menos complejas, donde el contenedor (Adobe AIR , navegador o reproductor independiente) escalado por el usuario, obligando a un reposicionamiento de los objetos que componen la película. La reducción del tamaño del envase, obviamente, sigue una función de dibujo, o actualizar MovieClip puede cambiar la posición o el rediseño de la interfaz de tiempo de ejecución para el nuevo tamaño del contenedor. Hoy en día esta técnica también se utiliza en sitios web más avanzados o interfaz articulado, rendondo muy piadoso atractivo. La implementación de esta técnica es bastante simple y, en sustancia, el objeto de Flash Etapa nativos e introducidos con la versión MX. Para su ejecución que aquí hay una clase que permite obtener las coordenadas de la Stage :

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/ **
*
* @ StageExt.as Archivo
* @ Autor Giovambattista Fazioli (@ g.fazioli undolog.com)
* @ Web http://www.undolog.com
* @ @ Email g.fazioli undolog.com
* /
{Clase StageExt
/ / Liberar
__release : String = "1.0" ; var __release privado: Cadena = "1.0";
/ / Propiedades
__movieWidth : Number = 0 ; var __movieWidth privado: Número = 0;
__movieHeight : Number = 0 ; var __movieHeight privado: Número = 0;
__left : Number = 0 ; var __left privado: Número = 0;
__right : Number = 0 ; var privado __right: Número = 0;
__top : Number = 0 ; var __top privado: Número = 0;
__bottom : Number = 23 ; var __bottom privado: Número = 23;
/ /
w : Number , h : Number ) { StageExt función (w: Número , h: Número ) {
"StageExt::constructor" ) ; trace ("StageExt:: constructor");
/ /
__movieWidth = w;
__movieHeight = h;
/ /
addListener ( this ) ; Pasantías addListener (este).;
}
/ **
* OnResize () evento
* /
onResize ( ) { onResize función privada () {
"StageExt::onResize " + Stage . width + ", " + Stage . height ) ; trace ("StageExt: onResize" + Etapa . ancho + "" + Etapa . de altura);
/ /
Number = Math . round ( Stage . width ) ; var sw: Número = Matemáticas y vuelta (. Etapa de ancho.)
Number = Math . round ( Stage . height ) ; var SH: Número = Matemáticas y vuelta (. Etapa de altura.)
Number = Math . round ( this . __movieWidth ) ; ow var: Número = Matemáticas . ronda (this. __movieWidth);
Number = Math . round ( this . __movieHeight ) ; Oh var: Número = Matemáticas ronda (this. __movieHeight).

/ / La coordenada x (arriba a la izquierda)

__left = - Math . floor ( ( ( sw - ow ) / 2 ) ) ; . esta __left = - Matemáticas . piso (((sw - ow) / 2));
__top = - Math . floor ( ( ( sh - oh ) / 2 ) ) ; . esta __top = - Matemáticas . piso (((sh - h) / 2));

/ / La coordenada x (parte superior derecha)

__right = Math . round ( ( sw + ow ) / 2 ) ; . esta __right = Matemáticas . round ((sw ow +) / 2);

/ / La coordenada y (abajo)

__bottom = Math . round ( ( sh + oh ) / 2 ) ; . esta __bottom = Matemáticas . round ((SH + S) / 2);
}
/ **
* Actualizar ()
* /
Refresh ( ) { public function actualizar () {
onResize ();
}
/ **
* Izquierda - se
* /
get Left ( ) : Number { public function get izquierda (): Número {
__left ) ; retorno (__left);
}
/ **
Arriba * - se
* /
get Top ( ) : Number { public function get Arriba (): Número {
__top ) ; retorno (__top);
}
/ **
* Derecho - se
* /
get Right ( ) : Number { public function get derecha (): Número {
__right ) ; retorno (__right);
}
/ **
* Fondo - se
* /
get Bottom ( ) : Number { public function get Abajo (): Número {
__bottom ) ; retorno (__bottom);
}
/ **
* MovieWidth - get / set
* /
get MovieWidth ( ) : Number { Función pública MovieWidth get (): Número {
__movieWidth ) ; retorno (__movieWidth);
}
set MovieWidth ( v : Number ) { MovieWidth conjunto de la función pública (v: Número ) {
__movieWidth = v;
}
/ **
* MovieHeight - get / set
* /
get MovieHeight ( ) : Number { Función pública MovieHeight get (): Número {
__movieHeight ) ; retorno (__movieHeight);
}
set MovieHeight ( v : Number ) { Conjunto MovieHeight función pública (v: Número ) {
__movieHeight = v;
}
}

Continuación ...

Cómo lo hice: Flash escribe una cuenta atrás

Para la serie "How I Did It" (o como yo) aquí es cómo hacer una cuenta atrás para mostrar Flash, empezando por una fecha, ¿qué días, horas, minutos y segundos que faltan un evento! La película de Flash a continuación, por ejemplo, ver la cantidad de días durante el primer año! Se pueden utilizar los menús desplegables para seleccionar una fecha diferente:

Cargando flash ...

Creamos tres day_cmb combo, month_cmb year_cmb, y prepararlos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/ / Combo de inicialización
controls . ComboBox ; . importar mx controles ComboBox.;
/ /
var i = 1 ; i < 32 ; i ++ ) { for (var i = 1, i <32; i + +) {
i , i ) ; . day_cmb addItem (i, i);
}

var i = 0 ; i < 12 ; i ++ ) { for (var i = 0; i <12; i + +) {
sm [ i ] , i ) ; month_cmb addItem (sm [i], i).;
}
/ / A partir de hoy ... Yo
var i = 2007 ; i < 2020 ; i ++ ) { for (var i = 2007; i <2020; i + +) {
i , i ) ; . year_cmb addItem (i, i);
}
/ / Establecer la fecha de 01 de enero 2008
; // -1 day_cmb selectedIndex = 0;. / / -1
; // -1 month_cmb selectedIndex = 0;. / / -1
; year_cmb selectedIndex = 1.;

El corazón del sistema colocamos el evento onEnterFrame:

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
onEnterFrame = function ( ) { este onEnterFrame. = function () {
/ /
Date = new Date ( ) ; var hoy: Date = new Date ();
getFullYear ( ) ; var hoy = CurrentY getFullYear ().;
getTime ( ) ; var hoy = horaActual getTime ().;
/ /

getTime ( ) ; . targetTime var = TARGETDIR getTime ();
/ /
currentTime ; var = targetTime TimeLeft - horaActual;
/ /
. floor ( timeLeft / 1000 ) ; var s = Matemáticas . piso (TimeLeft / 1000);
= Math . floor ( sec / 60 ) ; var min = Matemáticas suelo (seg / 60).;
. floor ( min / 60 ) ; horas var = Matemáticas . piso (min / 60);
. floor ( hrs / 24 ) ; día var = Matemáticas . piso (hrs / 24);
/ /
sec % 60 ) ; sec = cadena (% s 60);
length < 2 ) ? "0" + sec : sec ; sec = (sec. longitud <2) "0" + s: s;
/ /
( min % 60 ) ; min = cadena (% min 60);
min . length < 2 ) ? "0" + min : min ; = Min (min. longitud <2) "0" + min: min;
/ /
hrs % 24 ) ; hrs = cadena (% 24 hrs);
length < 2 ) ? "0" + hrs : hrs ; ? min = (hrs. longitud <2) "0" + hs: min;
/ /
days ) ; días = cadena (días);
length < 2 ) ? "0" + days : days ; ? = Día (days. longitud <2) "0" + días: días;
/ /
String = days + ":" + hrs + ":" + min + ":" + sec ; var contador: cadena = día + "" + horas + ":" + minutos + ":" + s;
/ /
= counter ; time_txt text = contador.;
};

Continuación ...



Dejar de SOPA