Por: Crop + Otros tutoriales de Crop + 1 de Noviembre del 2006
Este formulario se encuentra en http://www.cropcreativos.com siguiendo el enlace a pie de página lista de precios y luego en el mismo pie de página el enlace comprar aquí. Los precios y productos descritos son reales.
Con este tutorial aprenderemos paso a paso como crear un formulario con Flash y PHP enviado a nuestro servidor y al remitente en formato html con un número de identificación y la IP del que lo remite, además aprenderemos a personalizar y usar componentes para seleccionar distintas opciones que modificarán la respuesta que le llega tanto al cliente como a nosotros. Cargaremos una lista de productos desde un xml en un componente ComboBox y dependiendo de la selección se mostrarán en distintos campos, detalles como la descripción del producto y coste en distintas monedas. También haremos uso del componente CheckBox para aceptar una forma de pago y dependiendo de la selección del componente ComboBox mostrará unos CheckBox para seleccionar un plazo de pago.
Haremos uso de una galería de imágenes cortesía de Jorge Solís y que encontraréis en Flash-DB que hemos modificado para nuestro cometido.
Además haremos uso también del Whois cortesía de Dano y cuyo tutorial encontraréis aquí en Cristalab, que también hemos modificado para adaptarlo a este formulario.
Usaremos también para un mejor testeo de la dirección de correo el prototipo isMail o isEmail adaptado para usarlo directamente, mezcla del de Tonilopez, que encontraréis en After-Hours y del de Jonás Gálvez, que encontraréis en Sephiroth.
El Php recoge los datos que le pasamos desde flash, toma los campos y los coloca en una tabla html para enviárnosla a nosotros incluyendo el número de control en forma Alfanumérica y corta, para que pueda ser usado como número de Albarán y la IP del que lo envía y al mismo tiempo envía otro correo al remitente confirmando que su correo ha sido recibido, este correo también es en formato html e incluye imágenes que estarán en nuestro servidor y que el receptor para poder verlas tendrá que aceptar las imágenes en su cliente de correo y estar conectado a Internet. Una vez que Php envía los mensajes imprime en nuestro campo de texto del formulario la frase enviando, que marca el inicio del limpiado de los campos y confirma finalmente que el mensaje ya se ha enviado. El mensaje que se recibe variará dependiendo de la selección que haga el cliente y la respuesta final será diferente. Las posibles modificaciones serían, si ha seleccionado nombre de dominio, si ha seleccionado pago mensual o anual, la forma de pago que seleccione el producto que seleccione e incluso dependiendo de la selección, tendrá que aceptar unas condiciones de contrato que recibirá en la respuesta y que garantizará que acepte estas condiciones, ya que de otra forma el correo no se envía.
Lo primero que haremos será enumerar en la siguiente imagen todos los componentes y campos del formulario y archivos a los que afecta, si es que dependieran de algún otro archivo, como ocurre con el whois de Dano, o la galería de Jorge Solís, que dependen de archivos As para ser creados.

| Número | Descripción | Campo Nombre | Campo Variable |
| 1 | Introducción de texto nombre | nombre | FirstName |
| 2 | Introducción de texto apellidos | apellidos | LastName |
| 3 | Introducción de texto correo | correo | |
| 4 | Texto dinámico Pesos Chilenos | pesos | peso |
| 5 | Introducción de texto empresa | empresa | Company |
| 6 | Texto dinámico Dólares USA | dolares | dolar |
| 7 | Introducción de texto teléfono | fono | Telephone |
| 8 | Texto dinámico Euros | euros | euro |
| 9 | Componente ComboBox de selección de producto | comboplan | |
| 10 | Componente CheckBox de selección de pago por Money Bookers | bookers | |
| 11 | Componente CheckBox de selección de otra forma de pago | otras | |
| 12 | Componente CheckBox de selección de plazo de pago anual | boxanual | |
| 13 | Componente CheckBox de selección de plazo de pago mensual | boxmensual | |
| 14 | Texto dinámico de descripción del producto seleccionado | planelegido | descripcion |
| 15 | Texto dinámico de descripción del plazo de entrega del producto | plazo | entrega |
| 16 | Texto dinámico título dominio | tituldominio | |
| 17 | Texto dinámico dominio elegido | dominio | domein |
| 18 | Texto dinámico aviso borrar dominio | avisodominio | |
| 19 | Componente Botón borrar dominio seleccionado | btnborrardmn | |
| 20 | Texto dinámico título plantilla | plantillatit | |
| 21 | Texto dinámico plantilla seleccionada | plantilla | template |
| 22 | Texto dinámico aviso borrar plantilla | avisoplantilla | |
| 23 | Componente Botón borrar plantilla seleccionada | btnborrarplt | |
| 24 | Introducción de texto nombre de dominio | itDomain | |
| 25 | Componente ComboBox de selección de tipo de dominio | clTLDs | |
| 26 | Componente Botón buscar dominio | btnFind | |
| 27 | Texto dinámico mensajes de la búsqueda de dominio | dtMessage | |
| 28 | Texto dinámico aviso aceptar dominio | avisoaceptardominio | |
| 29 | Componente Botón aceptar dominio | btnaceptar | |
| 30 | Clip Botón Enviar | ||
| 31 | Texto dinámico aceptar condiciones del contrato | aceptacion | aceptar |
| 32 | Texto dinámico título de las formas de pago | formaspago | |
| 33 | Texto dinámico mensaje del estado del envío del formulario | textos | EmailStatus |
Empezaremos por explicar la programación en flash para lo que vemos a primera vista, luego explicaremos las modificaciones en las clases danonino y las modificaciones en la galería de imágenes.
A continuación mostraremos una imagen para hacernos una idea de cómo tienen que quedarnos los layers y en qué fotograma tenemos que poner nuestra programación, de esta forma podremos explicar la programación que tenemos que ir poniendo punto por punto.

En el fotograma 1 del layer Galería "1"...
stop();
En el fotograma 2 del layer Galería "2":
stop();
En el fotograma 1 del layer condiciones "3"...
pesos.text = "0"; // ponemos a cero los campos de precio
dolares.text = "0";
euros.text = "0";
planelegido.text = ""; // vaciamos los campos de descripción y plazo de entrega
plazo.text = "";
comboplan.enabled = true; // hacemos que los campos de introducción de texto se puedan seleccionar
otras.enabled = true;
bookers.enabled = true;
nombre.enabled = true;
apellidos.enabled = true;
correo.enabled = true;
empresa.enabled = true;
fono.enabled = true;
En el fotograma 2 del layer condiciones "4"...
if (buscador.itDomain.text == "") { //Si el campo dominio que se encuentra dentro del clip buscador de dominios esta vacío... btnaceptar._visible = false; //Desactiva y oculta el botón aceptar dominio. btnaceptar.enabled = false; } comboplan.enabled = true; // al igual que antes activamos todos los componentes y campos otras.enabled = true; bookers.enabled = true; nombre.enabled = true; apellidos.enabled = true; correo.enabled = true; empresa.enabled = true; fono.enabled = true; if (boxanual._visible == true & boxmensual._visible == true & boxanual.selected == true ) { // miramos a ver si los checkboxes están visibles y si es así ... boxanual.enabled = false; // hacemos que el que este seleccionado no se pueda seleccionar... boxmensual.enabled = true; // y el que no está seleccionado si se pueda seleccionar. } else if (boxanual._visible == true & boxmensual._visible == true & boxmensual.selected == true ) { // lo mismo que lo anterior pero con el checkbox mensual. boxanual.enabled = true; boxmensual.enabled = false; }
A simple vista parece un código innecesario, pero más adelante veremos su utilidad, ya que el formulario, dependiendo de la selección que se haga, saltará a la galería de fotos desactivando todos los campos y cuando seleccionemos la plantilla en la galería, retornará a este punto para que podamos terminar de cumplimentar el formulario, y es entonces cuando necesitaremos que los componentes estén activos y se puedan seleccionar los campos de introducción de texto.
En este fotograma comentaremos la programación de los dos botones que contiene, no así, la programación de la barra de desplazamiento del texto, porque no es el objetivo de este tutorial.

El número "1" Botón cancelar
on (press){
// Si no aceptamos las condiciones nos manda al fotograma dos, del formulario y no lo manda.
gotoAndStop(2);
}
El número "2" Botón aceptar
on (press) { if (bookers.selected == true) { // Si hemos seleccionado como pago bookers, declara el contenido de la variable Pago como MoneyBookers. var Pago = "MoneyBookers"; } else if (otras.selected == true) { // Si la selección es otras lo mismo, esto hará que el mensaje que se manda sea uno u otro. var Pago = "Otras"; } // Declaramos la variable del paquete seleccionado. var Paquete = comboplan.text; // Rellenamos el campo de texto de la aceptación. aceptacion.text = "Acepto las condiciones del contrato"; // Y enviamos las variables al php para que las procese. loadVariablesNum ("mail/PedidoMail.php", "0", "POST"); // Vaciamos los campos de estado y borrar plantilla y borrar dominio. EmailStatus = ""; avisoplantilla.text = ""; avisodominio.text = ""; // Y ponemos en marcha la animación para que vaya al bucle en el que esperaremos a que el php nos indique que se ha enviado el mensaje. play (); }En el fotograma 3 del layer condiciones "5"...
Este fotograma corresponde al fotograma en el que situaremos la galería, que veremos más adelante, aquí nos interesa desactivar todos los componentes, para que no interfieran con la galería, podríamos simplemente poner un fotograma vacío en los campos de texto y componentes a la altura de la galería, pero como veremos más adelante, nos interesa mantenerlos como están, para que conserven los datos ya introducidos, y así ahorrarnos un buen trozo de código.
comboplan.enabled = false; // como ya comentamos, aquí nos interesa desactivar todos los campos y componentes.
otras.enabled = false;
bookers.enabled = false; boxanual.enabled = false;
boxmensual.enabled = false;
nombre.enabled = false;
apellidos.enabled = false;
correo.enabled = false;
empresa.enabled = false;
fono.enabled = false;
En el fotograma 4 del layer condiciones "6"...
En este fotograma se encuentran las condiciones del contrato y la programación se tiene que repetir, porque como ya explicamos según el producto seleccionado pasará a un fotograma u otro y tanto en este fotograma como en el de la galería nos interesa que los elementos del escenario no interfieran al tiempo que los conservamos con los valores introducidos por el remitente.
comboplan.enabled = false;
otras.enabled = false;
bookers.enabled = false; boxanual.enabled = false;
boxmensual.enabled = false;
nombre.enabled = false;
apellidos.enabled = false;
correo.enabled = false;
empresa.enabled = false;
fono.enabled = false;
En el fotograma 5 del layer condiciones "7"...
comboplan.enabled = false;
otras.enabled = false;
bookers.enabled = false; boxanual.enabled = false;
boxmensual.enabled = false;
nombre.enabled = false;
apellidos.enabled = false;
correo.enabled = false;
empresa.enabled = false;
fono.enabled = false;
En el fotograma 1 del layer temporizado "8"...
// Seleccionamos los estilos que queremos para los componentes
buscador.clTLDs.setStyle ("themeColor", "haloOrange");
buscador.clTLDs.setStyle ("fontSize", 10);
buscador.clTLDs.setStyle ("color", 0xFF9900);
buscador.btnFind.setStyle ("themeColor", "haloOrange");
buscador.btnFind.setStyle ("fontSize", 10);
buscador.btnFind.setStyle ("color", 0xFF9900);
comboplan.setStyle ("themeColor", "haloOrange");
comboplan.setStyle ("fontFamily", "verdana");
comboplan.setStyle ("fontSize", 10);
comboplan.setStyle ("color", 0xFF9900);
bookers.setStyle ("themeColor", "haloOrange");
bookers.setStyle ("fontFamily", "verdana");
bookers.setStyle ("fontSize", 10);
bookers.setStyle ("color", 0x663300);
otras.setStyle ("themeColor", "haloOrange");
otras.setStyle ("fontFamily", "verdana");
otras.setStyle ("fontSize", 10);
otras.setStyle ("color", 0x663300);
boxanual.setStyle ("themeColor", "haloOrange");
boxanual.setStyle ("fontFamily", "verdana");
boxanual.setStyle ("fontSize", 10);
boxanual.setStyle ("color", 0x663300);
boxmensual.setStyle ("themeColor", "haloOrange");
boxmensual.setStyle ("fontFamily", "verdana");
boxmensual.setStyle ("fontSize", 10);
boxmensual.setStyle ("color", 0x663300);
btnborrardmn.setStyle ("themeColor", "haloOrange");
btnborrardmn.setStyle ("fontSize", 10);
btnborrardmn.setStyle ("color", 0xFF9900);
btnborrarplt.setStyle ("themeColor", "haloOrange");
btnborrarplt.setStyle ("fontSize", 10);
btnborrarplt.setStyle ("color", 0xFF9900);
btnaceptar.setStyle ("themeColor", "haloOrange");
btnaceptar.setStyle ("fontSize", 10);
btnaceptar.setStyle ("color", 0xFF9900);
// desmarcamos desactivamos y ocultamos los checboxes porque de entrada no se mostrarán
boxanual._visible = false;
boxanual.enabled = false;
boxanual.selected = false;
boxmensual._visible = false;
boxmensual.enabled = false;
boxmensual.selected = false;
// cargamos nuestro xml de productos en nuestro combobox
productosXML = new XML ();
productosXML.ignoreWhite = true;
productosXML.onLoad = parsearXML;
productosXML.load ("productos.xml");
function parsearXML (succes)
{
ProductosCombo = new Array ();
for (var i = 0; i < productosXML.firstChild.childNodes.length; i ++)
{
ProductosCombo.addItem (
{
label : productosXML.firstChild.childNodes [i].attributes.nombre, data : productosXML.firstChild.childNodes [i].attributes.valor
});
}
comboplan.dataProvider = ProductosCombo
}
// Creamos un listener para que cuando seleccionemos un ítem en el combo tengamos el comportamiento que queremos.
var listenerObject : Object = new Object ();
listenerObject.change = function (eventObject : Object)
{
// El ítem 0 del xml no contiene ningún producto y por lo tanto pondremos a 0 los precios y vaciaremos los campos.
if (eventObject.target.value == 0)
{
pesos.text = "0";
dolares.text = "0";
euros.text = "0";
planelegido.text = "";
plazo.text = "";
}
// Los ítems 1,2,3,7,8,9 del xml son productos que se pueden pagar anualmente o mensualmente, así que activaremos y mostraremos los checkboxes, seleccionaremos por defecto el pago anual y crearemos dos variables globales con el precio anual y el mensual para que puedan ser usadas por los checkboxes al seleccionarse.
if (eventObject.target.value == 1 || eventObject.target.value == 2 || eventObject.target.value == 3 || eventObject.target.value == 7 || eventObject.target.value == 8 || eventObject.target.value == 9)
{
_global.peso = productosXML.firstChild.childNodes [eventObject.target.value].attributes.pesos;
_global.dolar = productosXML.firstChild.childNodes [eventObject.target.value].attributes.dolares;
_global.euro = productosXML.firstChild.childNodes [eventObject.target.value].attributes.euros;
_global.pesomes = productosXML.firstChild.childNodes [eventObject.target.value].attributes.pesosmes;
_global.dolarmes = productosXML.firstChild.childNodes [eventObject.target.value].attributes.dolaresmes;
_global.euromes = productosXML.firstChild.childNodes [eventObject.target.value].attributes.eurosmes;
boxanual._visible = true;
boxanual.enabled = false;
boxmensual._visible = true;
boxmensual.enabled = true;
boxanual.selected = true;
boxmensual.selected = false;
formaspago.text = "Forma y plazo de pago";
}
// Y crearemos otra condición con el resto de los ítems para que oculte y desactive los checkboxes anual y mensual.
if (eventObject.target.value == 0 || eventObject.target.value == 4 || eventObject.target.value == 5 || eventObject.target.value == 6 || eventObject.target.value == 10 || eventObject.target.value == 11 || eventObject.target.value == 12 || eventObject.target.value == 13 || eventObject.target.value == 14 || eventObject.target.value == 15 || eventObject.target.value == 16 || eventObject.target.value == 17 || eventObject.target.value == 18 || eventObject.target.value == 19 || eventObject.target.value == 20 || eventObject.target.value == 21 || eventObject.target.value == 22 || eventObject.target.value == 23 || eventObject.target.value == 24 || eventObject.target.value == 25 || eventObject.target.value == 26 || eventObject.target.value == 27 || eventObject.target.value == 28 || eventObject.target.value == 29 || eventObject.target.value == 30 || eventObject.target.value == 31 || eventObject.target.value == 32 || eventObject.target.value == 33 || eventObject.target.value == 34 )
{
boxanual._visible = false;
boxanual.enabled = false;
boxanual.selected = false;
boxmensual._visible = false;
boxmensual.enabled = false;
boxmensual.selected = false;
formaspago.text = "Forma de pago";
}
// Los ítems 7,8,9 del xml contiene página web, por lo tanto mostraremos el título Plantilla y enviaremos la animación al fotograma 3, donde se encuentra la galería, para que el cliente pueda seleccionar la plantilla que desee.
if (eventObject.target.value == 7 & plantilla.text == "" || eventObject.target.value == 8 & plantilla.text == "" || eventObject.target.value == 9 & plantilla.text == "" )
{
plantillatit.text = "Plantilla";
gotoAndStop (3);
// lo mandamos al fotograma 3 donde esta la galería para seleccionar una plantilla.
}
// Si los ítems no son los mencionados anteriormente, borramos el título de Plantilla, borramos el campo de plantilla seleccionada y ocultamos y desactivamos el botón borrar plantilla
if (eventObject.target.value != 7 & plantilla.text != "" || eventObject.target.value != 8 & plantilla.text != "" || eventObject.target.value != 9 & plantilla.text != "" )
{
plantillatit.text = "";
plantilla.text = "";
btnborrarplt._visible = false;
btnborrarplt.enabled = false;
}
// Al margen de la selección, siempre que se varíe la selección del combobox, los campos de precios, descripción del producto y plazo de entrega.
pesos.text = productosXML.firstChild.childNodes [eventObject.target.value].attributes.pesos;
dolares.text = productosXML.firstChild.childNodes [eventObject.target.value].attributes.dolares;
euros.text = productosXML.firstChild.childNodes [eventObject.target.value].attributes.euros;
planelegido.text = productosXML.firstChild.childNodes [eventObject.target.value].attributes.descripcion;
plazo.text = productosXML.firstChild.childNodes [eventObject.target.value].attributes.plazo;
// si se selecciona el ítem 4
if (eventObject.target.value == 4)
{
// Miramos a ver si el campo de dominio está vacio
if ( ! domein.length)
{
// Si lo esta mostramos el clip que contiene el buscador Whois así como los botones y campos que lo componen, mostrándolos y activándolos y seleccionando el primer ítem del combobox dominio del buscador.
buscador._visible = true;
buscador.btnFind._visible = true;
buscador.btnFind.enabled = true;
buscador.clTLDs.enabled = true;
buscador.itDomain.enabled = true;
buscador.clTLDs.selectedIndex = buscador.clTLDs.length - 6;
// Si el campo dominio no esta vacío y el campo del mensaje nos dice que no se encuentra registrado, mostramos el botón aceptar dominio para que si lo desea el usuario acepte ese dominio y pase los datos al formulario general como dominio seleccionado.
if ( ! buscador.itDomain.indexOf ("") & buscador.dtMessage.text == "Dominio no registrado.")
{
btnaceptar._visible = true;
btnaceptar.enabled = true;
} else
{
// De lo contrario ocultamos los botones de aceptación de dominio, ya que o no se ha introducido dominio alguno, o el dominio introducido se encuentra registrado.
btnaceptar._visible = false;
btnaceptar.enabled = false;
}
}
// Lo mismo que con el ítem 4
} else if (eventObject.target.value == 5)
{
if ( ! domein.length)
{
buscador._visible = true;
buscador.btnFind._visible = true;
buscador.btnFind.enabled = true;
buscador.clTLDs.enabled = true;
buscador.itDomain.enabled = true;
buscador.clTLDs.selectedIndex = buscador.clTLDs.length - 6;
if ( ! buscador.itDomain.indexOf ("") & buscador.dtMessage.text == "Dominio no registrado.")
{
btnaceptar._visible = true;
btnaceptar.enabled = true;
} else
{
btnaceptar._visible = false;
btnaceptar.enabled = false;
}
}
// Lo mismo que con el ítem 4
} else if (eventObject.target.value == 6)
{
if ( ! domein.length)
{
buscador._visible = true;
buscador.btnFind._visible = true;
buscador.btnFind.enabled = true;
buscador.clTLDs.enabled = true;
buscador.itDomain.enabled = true;
buscador.clTLDs.selectedIndex = buscador.clTLDs.length - 6;
if ( ! buscador.itDomain.indexOf ("") & buscador.dtMessage.text == "Dominio no registrado.")
{
btnaceptar._visible = true;
btnaceptar.enabled = true;
} else
{
btnaceptar._visible = false;
btnaceptar.enabled = false;
}
}
// Lo mismo que con el ítem 4
} else if (eventObject.target.value == 7)
{
if ( ! domein.length)
{
buscador._visible = true;
buscador.btnFind._visible = true;
buscador.btnFind.enabled = true;
buscador.clTLDs.enabled = true;
buscador.itDomain.enabled = true;
buscador.clTLDs.selectedIndex = buscador.clTLDs.length - 6;
if ( ! buscador.itDomain.indexOf ("") & buscador.dtMessage.text == "Dominio no registrado.")
{
btnaceptar._visible = true;
btnaceptar.enabled = true;
} else
{
btnaceptar._visible = false;
btnaceptar.enabled = false;
}
}
// Lo mismo que con el ítem 4
} else if (eventObject.target.value == 8)
{
if ( ! domein.length)
{
buscador._visible = true;
buscador.btnFind._visible = true;
buscador.btnFind.enabled = true;
buscador.clTLDs.enabled = true;
buscador.itDomain.enabled = true;
buscador.clTLDs.selectedIndex = buscador.clTLDs.length - 6;
if ( ! buscador.itDomain.indexOf ("") & buscador.dtMessage.text == "Dominio no registrado.")
{
btnaceptar._visible = true;
btnaceptar.enabled = true;
} else
{
btnaceptar._visible = false;
btnaceptar.enabled = false;
}
}
// Lo mismo que con el ítem 4
} else if (eventObject.target.value == 9)
{
if ( ! domein.length)
{
buscador._visible = true;
buscador.btnFind._visible = true;
buscador.btnFind.enabled = true;
buscador.clTLDs.enabled = true;
buscador.itDomain.enabled = true;
buscador.clTLDs.selectedIndex = buscador.clTLDs.length - 6;
if ( ! buscador.itDomain.indexOf ("") & buscador.dtMessage.text == "Dominio no registrado.")
{
btnaceptar._visible = true;
btnaceptar.enabled = true;
} else
{
btnaceptar._visible = false;
btnaceptar.enabled = false;
}
}
// Lo mismo que con el ítem 4
} else if (eventObject.target.value == 10)
{
if ( ! domein.length)
{
buscador._visible = true;
buscador.btnFind._visible = true;
buscador.btnFind.enabled = true;
buscador.clTLDs.enabled = true;
buscador.itDomain.enabled = true;
buscador.clTLDs.selectedIndex = buscador.clTLDs.length - 6;
if ( ! buscador.itDomain.indexOf ("") & buscador.dtMessage.text == "Dominio no registrado.")
{
btnaceptar._visible = true;
btnaceptar.enabled = true;
} else
{
btnaceptar._visible = false;
btnaceptar.enabled = false;
}
}
} else
{
// En caso contrario, borramos el campo del dominio, el título, ocultamos el buscador de dominios y desactivamos y ocultamos todas las funciones relacionadas con el buscador de dominios.
tituldominio.text = "";
dominio.text = "";
buscador._visible = false;
buscador.btnFind._visible = false;
buscador.btnFind.enabled = false;
buscador.clTLDs.enabled = false;
buscador.itDomain.enabled = false;
btnaceptar._visible = false;
btnaceptar.enabled = false;
btnborrardmn._visible = false;
btnborrardmn.enabled = false;
}
};
// Como comentamos al principio adjudicamos el listener del evento cambiar al combobox de selección de productos.
comboplan.addEventListener ("change", listenerObject);
En el fotograma 2 del layer temporizado "9"...
La programación de este fotograma es casi idéntica a la anterior, aunque varían algunas partes, como desactivar los checkboxes de pago mensual y pago anual, y cargar el xml que ya lo tenemos cargado, este fotograma lo usaremos al regresar de la selección de la plantilla en la galería, donde no nos interesa ni vaciar los campos ni desactivar los que estén activos.
// Seleccionamos los estilos que queremos para los componentes buscador.clTLDs.setStyle ("themeColor", "haloOrange"); buscador.clTLDs.setStyle ("fontSize", 10); buscador.clTLDs.setStyle ("color", 0xFF9900); buscador.btnFind.setStyle ("themeColor", "haloOrange"); buscador.btnFind.setStyle ("fontSize", 10); buscador.btnFind.setStyle ("color", 0xFF9900); comboplan.setStyle ("themeColor", "haloOrange"); comboplan.setStyle ("fontFamily", "verdana"); comboplan.setStyle ("fontSize", 10); comboplan.setStyle ("color", 0xFF9900); bookers.setStyle ("themeColor", "haloOrange"); bookers.setStyle ("fontFamily", "verdana"); bookers.setStyle ("fontSize", 10); bookers.setStyle ("color", 0x663300); otras.setStyle ("themeColor", "haloOrange"); otras.setStyle ("fontFamily", "verdana"); otras.setStyle ("fontSize", 10); otras.setStyle ("color", 0x663300); boxanual.setStyle ("themeColor", "haloOrange"); boxanual.setStyle ("fontFamily", "verdana"); boxanual.setStyle ("fontSize", 10); boxanual.setStyle ("color", 0x663300); boxmensual.setStyle ("themeColor", "haloOrange"); boxmensual.setStyle ("fontFamily", "verdana"); boxmensual.setStyle ("fontSize", 10); boxmensual.setStyle ("color", 0x663300); btnborrardmn.setStyle ("themeColor", "haloOrange"); btnborrardmn.setStyle ("fontSize", 10); btnborrardmn.setStyle ("color", 0xFF9900); btnborrarplt.setStyle ("themeColor", "haloOrange"); btnborrarplt.setStyle ("fontSize", 10); btnborrarplt.setStyle ("color", 0xFF9900); btnaceptar.setStyle ("themeColor", "haloOrange"); btnaceptar.setStyle ("fontSize", 10); btnaceptar.setStyle ("color", 0xFF9900); // Nos aseguramos de que el listener continúe activo en caso de retornar a este keyframe, el resto de la programación es exactamente igual al fotograma anterior. var listenerObject : Object = new Object (); listenerObject.change = function (eventObject : Object) { if (eventObject.target.value == 0) { pesos.text = "0"; dolares.text = "0"; euros.text = "0"; planelegido.text = ""; plazo.text = ""; } if (eventObject.target.value == 1 || eventObject.target.value == 2 || eventObject.target.value == 3 || eventObject.target.value == 7 || eventObject.target.value == 8 || eventObject.target.value == 9) { _global.peso = productosXML.firstChild.childNodes [eventObject.target.value].attributes.pesos; _global.dolar = productosXML.firstChild.childNodes [eventObject.target.value].attributes.dolares; _global.euro = productosXML.firstChild.childNodes [eventObject.target.value].attributes.euros; _global.pesomes = productosXML.firstChild.childNodes [eventObject.target.value].attributes.pesosmes; _global.dolarmes = productosXML.firstChild.childNodes [eventObject.target.value].attributes.dolaresmes; _global.euromes = productosXML.firstChild.childNodes [eventObject.target.value].attributes.eurosmes; boxanual._visible = true; boxanual.enabled = false; boxmensual._visible = true; boxmensual.enabled = true; boxanual.selected = true; boxmensual.selected = false; formaspago.text = "Forma y plazo de pago"; } if (eventObject.target.value == 0 || eventObject.target.value == 4 || eventObject.target.value == 5 || eventObject.target.value == 6 || eventObject.target.value == 10 || eventObject.target.value == 11 || eventObject.target.value == 12 || eventObject.target.value == 13 || eventObject.target.value == 14 || eventObject.target.value == 15 || eventObject.target.value == 16 || eventObject.target.value == 17 || eventObject.target.value == 18 || eventObject.target.value == 19 || eventObject.target.value == 20 || eventObject.target.value == 21 || eventObject.target.value == 22 || eventObject.target.value == 23 || eventObject.target.value == 24 || eventObject.target.value == 25 || eventObject.target.value == 26 || eventObject.target.value == 27 || eventObject.target.value == 28 || eventObject.target.value == 29 || eventObject.target.value == 30 || eventObject.target.value == 31 || eventObject.target.value == 32 || eventObject.target.value == 33 || eventObject.target.value == 34 ) { boxanual._visible = false; boxanual.enabled = false; boxanual.selected = false; boxmensual._visible = false; boxmensual.enabled = false; boxmensual.selected = false; formaspago.text = "Forma de pago"; } if (eventObject.target.value == 7 & plantilla.text == "" || eventObject.target.value == 8 & plantilla.text == "" || eventObject.target.value == 9 & plantilla.text == "" ) { plantillatit.text = "Plantilla"; gotoAndStop (3); } if (eventObject.target.value != 7 & plantilla.text != "" || eventObject.target.value != 8 & plantilla.text != "" || eventObject.target.value != 9 & plantilla.text != "" ) { plantillatit.text = ""; plantilla.text = ""; btnborrarplt._visible = false; btnborrarplt.enabled = false; } pesos.text = productosXML.firstChild.childNodes [eventObject.target.value].attributes.pesos; dolares.text = productosXML.firstChild.childNodes [eventObject.target.value].attributes.dolares; euros.text = productosXML.firstChild.childNodes [eventObject.target.value].attributes.euros; planelegido.text = productosXML.firstChild.childNodes [eventObject.target.value].attributes.descripcion; plazo.text = productosXML.firstChild.childNodes [eventObject.target.value].attributes.plazo; if (eventObject.target.value == 4) { if ( ! domein.length) { buscador._visible = true; buscador.btnFind._visible = true; buscador.btnFind.enabled = true; buscador.clTLDs.enabled = true; buscador.itDomain.enabled = true; buscador.clTLDs.selectedIndex = buscador.clTLDs.length - 6; if ( ! buscador.itDomain.indexOf ("") & buscador.dtMessage.text == "Dominio no registrado.") { btnaceptar._visible = true; btnaceptar.enabled = true; } else { btnaceptar._visible = false; btnaceptar.enabled = false; } } } else if (eventObject.target.value == 5) { if ( ! domein.length) { buscador._visible = true; buscador.btnFind._visible = true; buscador.btnFind.enabled = true; buscador.clTLDs.enabled = true; buscador.itDomain.enabled = true; buscador.clTLDs.selectedIndex = buscador.clTLDs.length - 6; if ( ! buscador.itDomain.indexOf ("") & buscador.dtMessage.text == "Dominio no registrado.") { btnaceptar._visible = true; btnaceptar.enabled = true; } else { btnaceptar._visible = false; btnaceptar.enabled = false; } } } else if (eventObject.target.value == 6) { if ( ! domein.length) { buscador._visible = true; buscador.btnFind._visible = true; buscador.btnFind.enabled = true; buscador.clTLDs.enabled = true; buscador.itDomain.enabled = true; buscador.clTLDs.selectedIndex = buscador.clTLDs.length - 6; if ( ! buscador.itDomain.indexOf ("") & buscador.dtMessage.text == "Dominio no registrado.") { btnaceptar._visible = true; btnaceptar.enabled = true; } else { btnaceptar._visible = false; btnaceptar.enabled = false; } } } else if (eventObject.target.value == 7) { if ( ! domein.length) { buscador._visible = true; buscador.btnFind._visible = true; buscador.btnFind.enabled = true; buscador.clTLDs.enabled = true; buscador.itDomain.