Comunidad de diseño web y desarrollo en internet

Creación de ventanas flotantes en Flash usando Clases

Se recomienda leer el tutorial de ActionScript 2.0 y el tutorial de programación orientada a objetos en Flash antes de leer este tutorial.

Para empezar vamos a analizar el tipo de ventana que vamos a diseñar y como queremos que interactúe con el usuario.
En este caso queremos que tenga dos botones, uno para cerrar y otro para miminizar. Queremos tener una barra superior que cuando la pulsemos podamos mover todo nuestro componente; y como no un cuerpo donde guardemos un MovieClip Formulario que hemos creado a parte.

Por esta razón dividiremos nuestro trabajo en dos partes, crear el skin de la ventana (por así decirlo) y crear el código de la misma.

Empezaremos con la parte gráfica.

Cada Componente de la ventana es un MovieClip, de esta manera nos surgirán en un principio 5 MovieClips:

  • dos de tipo botón:
    • Uno para el botón de cerrar al que llamaremos "BotonCerrar":
    • Y otro para el botón de miminizar al que vincularemos con el nombre de “BotonMiminizar

  • Y tres de tipo Clip de Video:
    • El borde superior, que hemos realizado con un bloque y un pequeño degradado:

    • El cuerpo, que será un bloque del mismo color que el predominante en el borde:

    • Y el titulo de la ventana que será á tan solo un Texto Dinámico con un color y fuente concretos:

Ahora tendremos que implementar el código para que todos estos componentes nos aparezcan en pantalla en un orden preciso. Crearemos un nuevo archivo de Código ActionScript en el que crearemos nuestra clase “Ventana”.

class Ventana {
}
Acto seguido declararemos las variables necesarias para el funcionamiento de la ventana:
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
}
  • padre: es donde guardamos el Clip de Película que contendrá la ventana.
  • miVentana: es la ventana tal y como la mostraremos en pantalla. El MovieClip que contiene todos los símbolos creados antes en una posición y orden concretos.
  • n: el número de ventana, por si queremos mostrar número de ventana, por si queremos mostrar más de una simultáneamente.
  • h: almacenaremos la altura de nuestra ventana.
  • w: variable numérica que almacena el ancho de la ventana.
  • ch: C lo utilizaremos para guardar la altura del cuerpo de la ventana. La parte que ocultamos cuando presionamos el botón miminizar.
  • cw: contendrá el ancho del cuerpo de la ventana.
El código de nuestro constructor será:
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;

function Ventana(h, w, mc, titulo, padre, n) {
}
}

En el que especificaremos el alto, ancho, MovieClip que contendrá la ventana, el titulo de la misma, el contendor y el número.

Las primeras operaciones que realizaremos serán la asignación de algunas variables y creación del Clip de video donde dibujaremos la ventana.
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {

this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
}
}
Continuaremos creando la parte referente al borde superior de nuestra ventana. Cuando pulsemos sobre esta parte, podremos mover toda la ventana por la pantalla, por lo que añadiremos el código referente:
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];

this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
}
}
Cuando pulsemos con el ratón sobre el borde empezaremos la operación de coger con toda nuestra ventana (si pusiéramos startDrag(this), solo nos cogería el borde). Y cuando soltemos el botón pararemos la operación, por así decirlo, soltaremos la ventana.
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;

this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
}
}
Nota: debido a un fallo que daba el código inicial tuvimos que añadir una restricción antes de empezar a agarrar nuestra ventana: que el ratón estuviera dentro del área que ocupa nuestra barra.
Ahora añadiremos dentro de la barra superior el fondo y el titulo de la ventana:
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};

this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;
}
}

En nuestro caso el borde superior ocupará 23 píxeles, y para que el texto no quede totalmente pegado a la esquina superior izquierda le daremos un margen de 5 píxeles.

Continuaremos implementando nuestro constructor creando el cuerpo de la ventana, al que además le añadiremos el MovieClip que le habíamos pasado al principio.
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;

this.miVentana.createEmptyMovieClip("cuerpo", n+1100);
this.miVentana.cuerpo.attachMovie("Cuerpo", "fondo", n+1300);
this.miVentana.cuerpo.fondo._x = 0;
this.miVentana.cuerpo.fondo._y = 23;
this.miVentana.cuerpo.fondo._height = h-20;
this.miVentana.cuerpo.fondo._width = w;
this.miVentana.cuerpo.attachMovie(mc, "componente", n+1400);
this.miVentana.cuerpo.componente._x = 5;
this.miVentana.cuerpo.componente._y = 25;
}
}

Tendremos que respetar los componentes ya introducidos, y ajustarlo para que quede la presentación lo mejor posible mediante márgenes.

Y como últimos componentes añadiremos los botones:

class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;
this.miVentana.createEmptyMovieClip("cuerpo", n+1100);
this.miVentana.cuerpo.attachMovie("Cuerpo", "fondo", n+1300);
this.miVentana.cuerpo.fondo._x = 0;
this.miVentana.cuerpo.fondo._y = 23;
this.miVentana.cuerpo.fondo._height = h-20;
this.miVentana.cuerpo.fondo._width = w;
this.miVentana.cuerpo.attachMovie(mc, "componente", n+1400);
this.miVentana.cuerpo.componente._x = 5;
this.miVentana.cuerpo.componente._y = 25;

this.miVentana.attachMovie("BotonCerrar", "btn_cerrar", n+2000);
this.miVentana.btn_cerrar._height = 14;
this.miVentana.btn_cerrar._width = 15;
this.miVentana.btn_cerrar._x = w-18;
this.miVentana.btn_cerrar._y = 4.5;
this.miVentana.attachMovie("BotonMiminizar", "btn_min", n+3000);
this.miVentana.btn_min._height = 14;
this.miVentana.btn_min._width = 15;
this.miVentana.btn_min._x = w-36;
this.miVentana.btn_min._y = 4.5;
}
}

Estos últimos también tendremos que ajustarlos en unas posiciones especificas.

Al pulsar sobre ellos la ventana se debería animar de una manera específica. Para ello crearemos un Clip de Video vacío en el cuyo único fin sea llamar a una función que mueve la ventana. Este clip creará un “bucle” hasta que lo destruyamos.

Cuando pulsemos sobre el botón cerrar crearemos un MovieClip llamado muerte que llamará a la función “Recoger” a lo largo de toda su vida activa:
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;
this.miVentana.createEmptyMovieClip("cuerpo", n+1100);
this.miVentana.cuerpo.attachMovie("Cuerpo", "fondo", n+1300);
this.miVentana.cuerpo.fondo._x = 0;
this.miVentana.cuerpo.fondo._y = 23;
this.miVentana.cuerpo.fondo._height = h-20;
this.miVentana.cuerpo.fondo._width = w;
this.miVentana.cuerpo.attachMovie(mc, "componente", n+1400);
this.miVentana.cuerpo.componente._x = 5;
this.miVentana.cuerpo.componente._y = 25;
this.miVentana.attachMovie("BotonCerrar", "btn_cerrar", n+2000);
this.miVentana.btn_cerrar._height = 14;
this.miVentana.btn_cerrar._width = 15;
this.miVentana.btn_cerrar._x = w-18;
this.miVentana.btn_cerrar._y = 4.5;
this.miVentana.attachMovie("BotonMiminizar", "btn_min", n+3000);
this.miVentana.btn_min._height = 14;
this.miVentana.btn_min._width = 15;
this.miVentana.btn_min._x = w-36;
this.miVentana.btn_min._y = 4.5;

this.miVentana.btn_cerrar.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("muerte", 1);
this._parent.muerte.onEnterFrame = function() {
this._parent.path.Recoger(this._parent.path.w, this._parent.path.h);
};
this.miVentana.muerte.path = this._parent.path;
};
}
}
Y la función recoger que estará fuera del constructor de la clase:
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;
this.miVentana.createEmptyMovieClip("cuerpo", n+1100);
this.miVentana.cuerpo.attachMovie("Cuerpo", "fondo", n+1300);
this.miVentana.cuerpo.fondo._x = 0;
this.miVentana.cuerpo.fondo._y = 23;
this.miVentana.cuerpo.fondo._height = h-20;
this.miVentana.cuerpo.fondo._width = w;
this.miVentana.cuerpo.attachMovie(mc, "componente", n+1400);
this.miVentana.cuerpo.componente._x = 5;
this.miVentana.cuerpo.componente._y = 25;
this.miVentana.attachMovie("BotonCerrar", "btn_cerrar", n+2000);
this.miVentana.btn_cerrar._height = 14;
this.miVentana.btn_cerrar._width = 15;
this.miVentana.btn_cerrar._x = w-18;
this.miVentana.btn_cerrar._y = 4.5;
this.miVentana.attachMovie("BotonMiminizar", "btn_min", n+3000);
this.miVentana.btn_min._height = 14;
this.miVentana.btn_min._width = 15;
this.miVentana.btn_min._x = w-36;
this.miVentana.btn_min._y = 4.5;
this.miVentana.btn_cerrar.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("muerte", 1);
this._parent.muerte.onEnterFrame = function() {
this._parent.path.Recoger(this._parent.path.w, this._parent.path.h);
};
this.miVentana.muerte.path = this._parent.path;
};
}

function Recoger(w, h) {
var dish, disw;
dish = (this.miVentana._height)/3;
disw = (this.miVentana._width)/3;
this.miVentana._height -= dish;
this.miVentana._width -= disw;
this.miVentana._y += dish/2;
this.miVentana._x += disw/2;
if (Math.round(this.miVentana._width)<=0 || Math.round(this.miVentana._height)<=0) {
delete this.miVentana.muerte.onEnterFrame;
this.miVentana.muerte.unloadMovie();
this.miVentana.unloadMovie();
}
}
}

La función “Recoger” será llamada por el Clip “muerte” hasta que sea borrado cuando desaparezca del todo la ventana. Y como en este caso es el botón cerrar, tambien borraremos ventana.

En el caso del botón miminizar pueden existir 2 casos, el de esconder el “cuerpo” de la ventana o restaurarlo:

class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;
this.miVentana.createEmptyMovieClip("cuerpo", n+1100);
this.miVentana.cuerpo.attachMovie("Cuerpo", "fondo", n+1300);
this.miVentana.cuerpo.fondo._x = 0;
this.miVentana.cuerpo.fondo._y = 23;
this.miVentana.cuerpo.fondo._height = h-20;
this.miVentana.cuerpo.fondo._width = w;
this.miVentana.cuerpo.attachMovie(mc, "componente", n+1400);
this.miVentana.cuerpo.componente._x = 5;
this.miVentana.cuerpo.componente._y = 25;
this.miVentana.attachMovie("BotonCerrar", "btn_cerrar", n+2000);
this.miVentana.btn_cerrar._height = 14;
this.miVentana.btn_cerrar._width = 15;
this.miVentana.btn_cerrar._x = w-18;
this.miVentana.btn_cerrar._y = 4.5;
this.miVentana.attachMovie("BotonMiminizar", "btn_min", n+3000);
this.miVentana.btn_min._height = 14;
this.miVentana.btn_min._width = 15;
this.miVentana.btn_min._x = w-36;
this.miVentana.btn_min._y = 4.5;
this.miVentana.btn_cerrar.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("muerte", 1);
this._parent.muerte.onEnterFrame = function() {
this._parent.path.Recoger(this._parent.path.w, this._parent.path.h);
};
this.miVentana.muerte.path = this._parent.path;
};

this.miVentana.btn_min.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("miminiza", 1);
if (Math.round(this._parent.cuerpo._height)>0) {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Esconder(this._parent.path.cw, this._parent.path.ch);
};
} else {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Mostrar(this._parent.path.cw, this._parent.path.ch);
};
}
this.miVentana.miminiza.path = this._parent.path;
};
}
function Recoger(w, h) {
var dish, disw;
dish = (this.miVentana._height)/3;
disw = (this.miVentana._width)/3;
this.miVentana._height -= dish;
this.miVentana._width -= disw;
this.miVentana._y += dish/2;
this.miVentana._x += disw/2;
if (Math.round(this.miVentana._width)<=0 || Math.round(this.miVentana._height)<=0) {
delete this.miVentana.muerte.onEnterFrame;
this.miVentana.muerte.unloadMovie();
this.miVentana.unloadMovie();
}
}
}

Cuando pulsemos sobre el botón miminizar miraremos el alto del cuerpo, si es mayor que 0 significa que no ha sido recogido, entonces nuestro Clip vacío llamará a “Esconder”, si no llamaremos a “Mostrar”, porque significaría que ya ha sido ocultado.

Los métodos de la clase que llamamos son mas simples que el de cerrar:
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;
this.miVentana.createEmptyMovieClip("cuerpo", n+1100);
this.miVentana.cuerpo.attachMovie("Cuerpo", "fondo", n+1300);
this.miVentana.cuerpo.fondo._x = 0;
this.miVentana.cuerpo.fondo._y = 23;
this.miVentana.cuerpo.fondo._height = h-20;
this.miVentana.cuerpo.fondo._width = w;
this.miVentana.cuerpo.attachMovie(mc, "componente", n+1400);
this.miVentana.cuerpo.componente._x = 5;
this.miVentana.cuerpo.componente._y = 25;
this.miVentana.attachMovie("BotonCerrar", "btn_cerrar", n+2000);
this.miVentana.btn_cerrar._height = 14;
this.miVentana.btn_cerrar._width = 15;
this.miVentana.btn_cerrar._x = w-18;
this.miVentana.btn_cerrar._y = 4.5;
this.miVentana.attachMovie("BotonMiminizar", "btn_min", n+3000);
this.miVentana.btn_min._height = 14;
this.miVentana.btn_min._width = 15;
this.miVentana.btn_min._x = w-36;
this.miVentana.btn_min._y = 4.5;
this.miVentana.btn_cerrar.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("muerte", 1);
this._parent.muerte.onEnterFrame = function() {
this._parent.path.Recoger(this._parent.path.w, this._parent.path.h);
};
this.miVentana.muerte.path = this._parent.path;
};
this.miVentana.btn_min.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("miminiza", 1);
if (Math.round(this._parent.cuerpo._height)>0) {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Esconder(this._parent.path.cw, this._parent.path.ch);
};
} else {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Mostrar(this._parent.path.cw, this._parent.path.ch);
};
}
this.miVentana.miminiza.path = this._parent.path;
};
}
function Recoger(w, h) {
var dish, disw;
dish = (this.miVentana._height)/3;
disw = (this.miVentana._width)/3;
this.miVentana._height -= dish;
this.miVentana._width -= disw;
this.miVentana._y += dish/2;
this.miVentana._x += disw/2;
if (Math.round(this.miVentana._width)<=0 || Math.round(this.miVentana._height)<=0) {
delete this.miVentana.muerte.onEnterFrame;
this.miVentana.muerte.unloadMovie();
this.miVentana.unloadMovie();
}
}

function Esconder(w, h) {
this.miVentana.cuerpo._height -= (this.miVentana.cuerpo._height)/2;
if (Math.round(this.miVentana._height)<=0) {
delete this.miVentana.miminiza.onEnterFrame;
this.miVentana.miminiza.unloadMovie();
}
}
function Mostrar(w, h) {
this.miVentana.cuerpo._height += (h-this.miVentana.cuerpo._height)/3;
if (Math.round(this.miVentana._height)>=Math.round(h)) {
delete this.miVentana.miminiza.onEnterFrame;
this.miVentana.miminiza.unloadMovie();
this.miVentana.cuerpo._height = h;
}
}
}
Hasta aquí hemos realizado las animaciones que requieren interacción del usuario, pero al crear la ventana también deberíamos animarla, para que aparezca de la nada y se vaya haciendo grande progresivamente. Ahora esto es una tarea fácil:
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;
this.miVentana.createEmptyMovieClip("cuerpo", n+1100);
this.miVentana.cuerpo.attachMovie("Cuerpo", "fondo", n+1300);
this.miVentana.cuerpo.fondo._x = 0;
this.miVentana.cuerpo.fondo._y = 23;
this.miVentana.cuerpo.fondo._height = h-20;
this.miVentana.cuerpo.fondo._width = w;
this.miVentana.cuerpo.attachMovie(mc, "componente", n+1400);
this.miVentana.cuerpo.componente._x = 5;
this.miVentana.cuerpo.componente._y = 25;
this.miVentana.attachMovie("BotonCerrar", "btn_cerrar", n+2000);
this.miVentana.btn_cerrar._height = 14;
this.miVentana.btn_cerrar._width = 15;
this.miVentana.btn_cerrar._x = w-18;
this.miVentana.btn_cerrar._y = 4.5;
this.miVentana.attachMovie("BotonMiminizar", "btn_min", n+3000);
this.miVentana.btn_min._height = 14;
this.miVentana.btn_min._width = 15;
this.miVentana.btn_min._x = w-36;
this.miVentana.btn_min._y = 4.5;
this.miVentana.btn_cerrar.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("muerte", 1);
this._parent.muerte.onEnterFrame = function() {
this._parent.path.Recoger(this._parent.path.w, this._parent.path.h);
};
this.miVentana.muerte.path = this._parent.path;
};
this.miVentana.btn_min.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("miminiza", 1);
if (Math.round(this._parent.cuerpo._height)>0) {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Esconder(this._parent.path.cw, this._parent.path.ch);
};
} else {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Mostrar(this._parent.path.cw, this._parent.path.ch);
};
}
this.miVentana.miminiza.path = this._parent.path;
};

this.miVentana.createEmptyMovieClip("vida", 1);
this.miVentana.vida._padre = this;
this.miVentana.vida.onEnterFrame = function() {
this._padre.Mover(this._padre.w, this._padre.h);
};
this.miVentana.vida.play();
}
function Recoger(w, h) {
var dish, disw;
dish = (this.miVentana._height)/3;
disw = (this.miVentana._width)/3;
this.miVentana._height -= dish;
this.miVentana._width -= disw;
this.miVentana._y += dish/2;
this.miVentana._x += disw/2;
if (Math.round(this.miVentana._width)<=0 || Math.round(this.miVentana._height)<=0) {
delete this.miVentana.muerte.onEnterFrame;
this.miVentana.muerte.unloadMovie();
this.miVentana.unloadMovie();
}
}
function Esconder(w, h) {
this.miVentana.cuerpo._height -= (this.miVentana.cuerpo._height)/2;
if (Math.round(this.miVentana._height)<=0) {
delete this.miVentana.miminiza.onEnterFrame;
this.miVentana.miminiza.unloadMovie();
}
}
function Mostrar(w, h) {
this.miVentana.cuerpo._height += (h-this.miVentana.cuerpo._height)/3;
if (Math.round(this.miVentana._height)>=Math.round(h)) {
delete this.miVentana.miminiza.onEnterFrame;
this.miVentana.miminiza.unloadMovie();
this.miVentana.cuerpo._height = h;
}
}
}
Crearemos en nuestra función principal el Clip de Película vacío “vida” al que le asignamos en que llame a “Mover” continuamente y lo activamos. Y la función mover (dentro de la clase “Ventana”) suma valores exponencialmente al tamaño de la ventana que en un principio deberá ser 0.
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;
this.miVentana.createEmptyMovieClip("cuerpo", n+1100);
this.miVentana.cuerpo.attachMovie("Cuerpo", "fondo", n+1300);
this.miVentana.cuerpo.fondo._x = 0;
this.miVentana.cuerpo.fondo._y = 23;
this.miVentana.cuerpo.fondo._height = h-20;
this.miVentana.cuerpo.fondo._width = w;
this.miVentana.cuerpo.attachMovie(mc, "componente", n+1400);
this.miVentana.cuerpo.componente._x = 5;
this.miVentana.cuerpo.componente._y = 25;
this.miVentana.attachMovie("BotonCerrar", "btn_cerrar", n+2000);
this.miVentana.btn_cerrar._height = 14;
this.miVentana.btn_cerrar._width = 15;
this.miVentana.btn_cerrar._x = w-18;
this.miVentana.btn_cerrar._y = 4.5;
this.miVentana.attachMovie("BotonMiminizar", "btn_min", n+3000);
this.miVentana.btn_min._height = 14;
this.miVentana.btn_min._width = 15;
this.miVentana.btn_min._x = w-36;
this.miVentana.btn_min._y = 4.5;
this.miVentana.btn_cerrar.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("muerte", 1);
this._parent.muerte.onEnterFrame = function() {
this._parent.path.Recoger(this._parent.path.w, this._parent.path.h);
};
this.miVentana.muerte.path = this._parent.path;
};
this.miVentana.btn_min.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("miminiza", 1);
if (Math.round(this._parent.cuerpo._height)>0) {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Esconder(this._parent.path.cw, this._parent.path.ch);
};
} else {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Mostrar(this._parent.path.cw, this._parent.path.ch);
};
}
this.miVentana.miminiza.path = this._parent.path;
};
this.miVentana.createEmptyMovieClip("vida", 1);
this.miVentana.vida._padre = this;
this.miVentana.vida.onEnterFrame = function() {
this._padre.Mover(this._padre.w, this._padre.h);
};
this.miVentana.vida.play();
}
function Recoger(w, h) {
var dish, disw;
dish = (this.miVentana._height)/3;
disw = (this.miVentana._width)/3;
this.miVentana._height -= dish;
this.miVentana._width -= disw;
this.miVentana._y += dish/2;
this.miVentana._x += disw/2;
if (Math.round(this.miVentana._width)<=0 || Math.round(this.miVentana._height)<=0) {
delete this.miVentana.muerte.onEnterFrame;
this.miVentana.muerte.unloadMovie();
this.miVentana.unloadMovie();
}
}
function Esconder(w, h) {
this.miVentana.cuerpo._height -= (this.miVentana.cuerpo._height)/2;
if (Math.round(this.miVentana._height)<=0) {
delete this.miVentana.miminiza.onEnterFrame;
this.miVentana.miminiza.unloadMovie();
}
}
function Mostrar(w, h) {
this.miVentana.cuerpo._height += (h-this.miVentana.cuerpo._height)/3;
if (Math.round(this.miVentana._height)>=Math.round(h)) {
delete this.miVentana.miminiza.onEnterFrame;
this.miVentana.miminiza.unloadMovie();
this.miVentana.cuerpo._height = h;
}
}

function Mover(w, h) {
this.miVentana._height += (h-this.miVentana._height)/5;
this.miVentana._width += (w-this.miVentana._width)/5;
if (Math.round(this.miVentana._width) == Math.round(w) || Math.round(this.miVentana._height) == Math.round(h)) {
delete this.miVentana.vida.onEnterFrame;
this.miVentana.vida.removeMovieClip();
}
}
}

Ahora terminaremos el procedimiento constructor de la clase con la asignación de las últimas variables o atributos:

class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;
this.miVentana.createEmptyMovieClip("cuerpo", n+1100);
this.miVentana.cuerpo.attachMovie("Cuerpo", "fondo", n+1300);
this.miVentana.cuerpo.fondo._x = 0;
this.miVentana.cuerpo.fondo._y = 23;
this.miVentana.cuerpo.fondo._height = h-20;
this.miVentana.cuerpo.fondo._width = w;
this.miVentana.cuerpo.attachMovie(mc, "componente", n+1400);
this.miVentana.cuerpo.componente._x = 5;
this.miVentana.cuerpo.componente._y = 25;
this.miVentana.attachMovie("BotonCerrar", "btn_cerrar", n+2000);
this.miVentana.btn_cerrar._height = 14;
this.miVentana.btn_cerrar._width = 15;
this.miVentana.btn_cerrar._x = w-18;
this.miVentana.btn_cerrar._y = 4.5;
this.miVentana.attachMovie("BotonMiminizar", "btn_min", n+3000);
this.miVentana.btn_min._height = 14;
this.miVentana.btn_min._width = 15;
this.miVentana.btn_min._x = w-36;
this.miVentana.btn_min._y = 4.5;
this.miVentana.btn_cerrar.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("muerte", 1);
this._parent.muerte.onEnterFrame = function() {
this._parent.path.Recoger(this._parent.path.w, this._parent.path.h);
};
this.miVentana.muerte.path = this._parent.path;
};
this.miVentana.btn_min.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("miminiza", 1);
if (Math.round(this._parent.cuerpo._height)>0) {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Esconder(this._parent.path.cw, this._parent.path.ch);
};
} else {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Mostrar(this._parent.path.cw, this._parent.path.ch);
};
}
this.miVentana.miminiza.path = this._parent.path;
};
this.miVentana.createEmptyMovieClip("vida", 1);
this.miVentana.vida._padre = this;
this.miVentana.vida.onEnterFrame = function() {
this._padre.Mover(this._padre.w, this._padre.h);
};
this.miVentana.vida.play();

this.cw = this.miVentana.cuerpo._width;
this.ch = this.miVentana.cuerpo._height;
this.w = this.miVentana._width;
this.h = this.miVentana._height;
this.miVentana._height = 0;
this.miVentana._width = 0;
this.miVentana.path = this;
this.titulo = titulo;
}
function Recoger(w, h) {
var dish, disw;
dish = (this.miVentana._height)/3;
disw = (this.miVentana._width)/3;
this.miVentana._height -= dish;
this.miVentana._width -= disw;
this.miVentana._y += dish/2;
this.miVentana._x += disw/2;
if (Math.round(this.miVentana._width)<=0 || Math.round(this.miVentana._height)<=0) {
delete this.miVentana.muerte.onEnterFrame;
this.miVentana.muerte.unloadMovie();
this.miVentana.unloadMovie();
}
}
function Esconder(w, h) {
this.miVentana.cuerpo._height -= (this.miVentana.cuerpo._height)/2;
if (Math.round(this.miVentana._height)<=0) {
delete this.miVentana.miminiza.onEnterFrame;
this.miVentana.miminiza.unloadMovie();
}
}
function Mostrar(w, h) {
this.miVentana.cuerpo._height += (h-this.miVentana.cuerpo._height)/3;
if (Math.round(this.miVentana._height)>=Math.round(h)) {
delete this.miVentana.miminiza.onEnterFrame;
this.miVentana.miminiza.unloadMovie();
this.miVentana.cuerpo._height = h;
}
}
function Mover(w, h) {
this.miVentana._height += (h-this.miVentana._height)/5;
this.miVentana._width += (w-this.miVentana._width)/5;
if (Math.round(this.miVentana._width) == Math.round(w) || Math.round(this.miVentana._height) == Math.round(h)) {
delete this.miVentana.vida.onEnterFrame;
this.miVentana.vida.removeMovieClip();
}
}
}

Se puede observar que “titulo” no es uno de los atributos declarados al principio de nuestra clase.

En este caso “titulo” será una propiedad que declararemos dentro de la clase pero fuera del constructor:
class Ventana {
private var _padre:MovieClip;
private var miVentana:MovieClip;
private var path:Object;
private var n:Number;
private var h:Number;
private var w:Number;
private var ch:Number;
private var cw:Number;
function Ventana(h, w, mc, titulo, padre, n) {
this.n = n;
this._padre = padre;
this._padre.createEmptyMovieClip("ventana"+n, n+1100);
this.miVentana = this._padre["ventana"+n];
this.miVentana.createEmptyMovieClip("BarraSuperior", n+1150);
this.miVentana.BarraSuperior._x = 0;
this.miVentana.BarraSuperior._y = 0;
this.miVentana.BarraSuperior.onMouseDown = function() {
if (this._xmouse>=0 && this._xmouse<=w && this._ymouse>=0 && this._ymouse<=23) {
startDrag(this._parent);
}
};
this.miVentana.BarraSuperior.onMouseUp = function() {
stopDrag();
};
this.miVentana.BarraSuperior.attachMovie("BordeSuperior", "borde", n+1100);
this.miVentana.BarraSuperior.borde._x = 0;
this.miVentana.BarraSuperior.borde._y = 0;
this.miVentana.BarraSuperior.borde._height = 23;
this.miVentana.BarraSuperior.borde._width = w;
this.miVentana.BarraSuperior.attachMovie("Titulo", "titulo", n+1200);
this.miVentana.BarraSuperior.titulo._x = 5;
this.miVentana.BarraSuperior.titulo._y = 5;
this.miVentana.createEmptyMovieClip("cuerpo", n+1100);
this.miVentana.cuerpo.attachMovie("Cuerpo", "fondo", n+1300);
this.miVentana.cuerpo.fondo._x = 0;
this.miVentana.cuerpo.fondo._y = 23;
this.miVentana.cuerpo.fondo._height = h-20;
this.miVentana.cuerpo.fondo._width = w;
this.miVentana.cuerpo.attachMovie(mc, "componente", n+1400);
this.miVentana.cuerpo.componente._x = 5;
this.miVentana.cuerpo.componente._y = 25;
this.miVentana.attachMovie("BotonCerrar", "btn_cerrar", n+2000);
this.miVentana.btn_cerrar._height = 14;
this.miVentana.btn_cerrar._width = 15;
this.miVentana.btn_cerrar._x = w-18;
this.miVentana.btn_cerrar._y = 4.5;
this.miVentana.attachMovie("BotonMiminizar", "btn_min", n+3000);
this.miVentana.btn_min._height = 14;
this.miVentana.btn_min._width = 15;
this.miVentana.btn_min._x = w-36;
this.miVentana.btn_min._y = 4.5;
this.miVentana.btn_cerrar.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("muerte", 1);
this._parent.muerte.onEnterFrame = function() {
this._parent.path.Recoger(this._parent.path.w, this._parent.path.h);
};
this.miVentana.muerte.path = this._parent.path;
};
this.miVentana.btn_min.onPress = function(evt:Object) {
this._parent.createEmptyMovieClip("miminiza", 1);
if (Math.round(this._parent.cuerpo._height)>0) {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Esconder(this._parent.path.cw, this._parent.path.ch);
};
} else {
this._parent.miminiza.onEnterFrame = function() {
this._parent.path.Mostrar(this._parent.path.cw, this._parent.path.ch);
};
}
this.miVentana.miminiza.path = this._parent.path;
};
this.miVentana.createEmptyMovieClip("vida", 1);
this.miVentana.vida._padre = this;
this.miVentana.vida.onEnterFrame = function() {
this._padre.Mover(this._padre.w, this._padre.h);
};
this.miVentana.vida.play();
this.cw = this.miVentana.cuerpo._width;
this.ch = this.miVentana.cuerpo._height;
this.w = this.miVentana._width;
this.h = this.miVentana._height;
this.miVentana._height = 0;
this.miVentana._width = 0;
this.miVentana.path = this;
this.titulo = titulo;
}
function Recoger(w, h) {
var dish, disw;
dish = (this.miVentana._height)/3;
disw = (this.miVentana._width)/3;
this.miVentana._height -= dish;
this.miVentana._width -= disw;
this.miVentana._y += dish/2;
this.miVentana._x += disw/2;
if (Math.round(this.miVentana._width)<=0 || Math.round(this.miVentana._height)<=0) {
delete this.miVentana.muerte.onEnterFrame;
this.miVentana.muerte.unloadMovie();
this.miVentana.unloadMovie();
}
}
function Esconder(w, h) {
this.miVentana.cuerpo._height -= (this.miVentana.cuerpo._height)/2;
if (Math.round(this.miVentana._height)<=0) {
delete this.miVentana.miminiza.onEnterFrame;
this.miVentana.miminiza.unloadMovie();
}
}
function Mostrar(w, h) {
this.miVentana.cuerpo._height += (h-this.miVentana.cuerpo._height)/3;
if (Math.round(this.miVentana._height)>=Math.round(h)) {
delete this.miVentana.miminiza.onEnterFrame;
this.miVentana.miminiza.unloadMovie();
this.miVentana.cuerpo._height = h;
}
}
function Mover(w, h) {
this.miVentana._height += (h-this.miVentana._height)/5;
this.miVentana._width += (w-this.miVentana._width)/5;
if (Math.round(this.miVentana._width) == Math.round(w) || Math.round(this.miVentana._height) == Math.round(h)) {
delete this.miVentana.vida.onEnterFrame;
this.miVentana.vida.removeMovieClip();
}
}

function set titulo(t:String) {
this.miVentana.BarraSuperior.titulo.texto.text = t;
}
function get titulo():String {
return this.miVentana.BarraSuperior.titulo.texto.text;
}
function set _x(t:Number) {
this.miVentana._x = t;
}
function get _x():Number {
return this.miVentana._x;
}
function set _y(t:Number) {
this.miVentana._y = t;
}
function get _y():Number {
return this.miVentana._y;
}
function set _height(t:Number) {
this.miVentana._height = t;
this.h = t;
}
function get _height():Number {
return this.miVentana._height;
}
function set _width(t:Number) {
this.miVentana._width = t;
this.w = t;
}
function get _width():Number {
return this.miVentana._width;
}
}

Y con esto ya tendríamos nuestra clase “Ventana”.

Para poder crear una ventana nos bastará con crear un MovieClip con cualquier cosa y escribir este código:

	var aux:Ventana;
aux = new Ventana(140, 280, mi_movieclip, "titulo", _root, n++);
aux._x = 100;
aux._y = 100;
Y ya esta!; cualquier pregunta, no dudes en colocarla en nuestros foros.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Descargar Archivo

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate