Comunidad de diseño web y desarrollo en internet online

Recuperar variables de un movieclip y enviar junto a formulario

Citar            
MensajeEscrito el 28 Ago 2011 10:14 pm
Buenas soy nuevo en el foro y he estado buscando algun tema que me pueda ayudar y no veo nada concreto. Tambien deciros practicamente no se nada de programacion, soy diseñador y me manejo un poco con flash, estoy empezando.

Mi problema es el siguiente:

Estoy haciendo una animacion en flash que podriamos decir que consta de dos partes, aunque estan dentro de la misma escena. La primera la tipica animacion en la que puedes cambiar colores a distintas partes del objeto (una camiseta) y la otra es un formulario.

A base de tutoriales he conseguido que funcionen las dos partes pero ahora necesito que junto al formulario se envie los valores de los colores que hemos elegido anteriormente. Esto se puede hacer??

el codigo de la animacion vendria a ser:

import flash.events.MouseEvent;


/// variables color 1

var blanco:ColorTransform = transform.colorTransform;
blanco.color = 0xFFFFFF;
var crema:ColorTransform = transform.colorTransform;
crema.color = 0xFFFF99;
var allo:ColorTransform = transform.colorTransform;
allo.color = 0xFFFF00;
... y asi con todos los colores

//// modificar colores

Blanco1.addEventListener(MouseEvent.CLICK, blanco001);
function blanco001(evento:MouseEvent):void{
color1.transform.colorTransform = blanco;
}
Blanco2.addEventListener(MouseEvent.CLICK, blanco002);
function blanco002(evento:MouseEvent):void{
color2.transform.colorTransform = blanco;
}
Blanco3.addEventListener(MouseEvent.CLICK, blanco003);
function blanco003(evento:MouseEvent):void{
color3.transform.colorTransform = blanco;
}
Blanco4.addEventListener(MouseEvent.CLICK, blanco004);
function blanco004(evento:MouseEvent):void{
color4.transform.colorTransform = blanco;
}
Blanco5.addEventListener(MouseEvent.CLICK, blanco005);
function blanco005(evento:MouseEvent):void{
puños.transform.colorTransform = blanco;
}

/// paso al formulario


Siguiente_btn.addEventListener(MouseEvent.CLICK, siguiente);
function siguiente(evento:MouseEvent):void{
gotoAndStop(40)

Este codigo esta resumido, creo que esta es la parte que interesa para la pregunta.

Ahora el codigo del formulario, este lo pongo entero ya que no es muy largo y sopongo que sera ahi donde hay que realizar los cambios.

import flash.events.Event;
import flash.net.URLVariables;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.IOErrorEvent;

stop();
System.useCodePage=true;

//*para colocar el cursor en el campo nombre_cont
nombre_cont.stage.focus=nombre_cont

//*boton borrar
borrar_btn.addEventListener(MouseEvent.CLICK,borrar);

function borrar(event:MouseEvent):void{
nombre_cont.text="";
poblacion_cont.text="";
email_cont.text="";
telefono_cont.text="";
unidades_cont.text="1";
pers_cont.selected=false;
numero_cont.selected=false;
logos_cont.selected=false;
comentario_cont.text="";
}

//*para enviar y validar los datos
enviar_btn.addEventListener(MouseEvent.CLICK, validarFormulario);

//*I Parte validar campos
function validarFormulario(event:Event):void {
errores_cont.text="";
if (nombre_cont.text.length==0) {
errores_cont.text="NO HA INTRODUCIDO NOMBRE";
nombre_cont.stage.focus=nombre_cont;
//*return false; no se que hace pero con no esto no funciona la animacion
} else if (poblacion_cont.text.length==0) {
errores_cont.text="NO HA INTRODUCIDO POBLACION";
poblacion_cont.stage.focus=poblacion_cont;
//*return false;
} else if (!esMail(email_cont.text)) {
errores_cont.text="NO ES UN E-MAIL VALIDO";
email_cont.text="";
email_cont.stage.focus=email_cont;
//*return false;
} else if (telefono_cont.text.length==0) {
errores_cont.text="NO HA INTRODUCIDO TELEFONO";
telefono_cont.stage.focus=telefono_cont;
//*return false;
}
}

function esMail(mail:String) {
if (mail.indexOf("@")>0&&mail.indexOf("@")==mail.lastIndexOf("@")) {
if (mail.lastIndexOf(".")>mail.indexOf("@")+1&&mail.lastIndexOf(".")) {
return true;
} else {
return false;
}
} else {
return false;
}
}

//*II Parte Envio de datos

enviar_btn.addEventListener(MouseEvent.CLICK,enviar);

function enviar(event:MouseEvent):void{
var envio:URLVariables = new URLVariables();
envio.nombre=nombre_cont.text;
envio.poblacion=poblacion_cont.text;
envio.email=email_cont.text;
envio.telefono=telefono_cont.text;
envio.unidades=unidades_cont.text;
envio.pers=pers_cont.selected;
envio.numero=numero_cont.selected;
envio.logos=logos_cont.selected;
envio.comentario=comentario_cont.text;
// aqui hay que añadir el modelo y los colores de cada MC

var urlPhp:URLRequest= new URLRequest("mail.php")
urlPhp.method=URLRequestMethod.POST;
urlPhp.data=envio;

var enviar:URLLoader=new URLLoader();
enviar.addEventListener(Event.COMPLETE,enviado);
enviar.addEventListener(IOErrorEvent.IO_ERROR,erroNoEnvio);
enviar.load (urlPhp);
trace (envio)
}

function enviado(event:Event):void {
errores_cont.text="MENSAJE ENVIADO.";
}

function erroNoEnvio(event:IOErrorEvent):void {
errores_cont.text="ERROR. INTENTALO DE NUEVO.";
}

}

De antemano os doy las gracias, ya solo por haber leido este tocho, y lo dicho si alguien sabe de un post donde hablen de este tema, agradeceria que me enviasen alli. Y si alguien sabe que codigo tengo que añadir se lo agredeceria en el alma, ya no se donde acudir.

p.d. el codigo del formulario tambien me da algun problemilla, creo que porque uso para validar el formulario el mismo boton que para enviar, o como lo he sacado de dos tutoriales distintos, seguramente se pisen el uno al otro, pero este problema no me inquieta tanto como el otro

Por proriders

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 29 Ago 2011 07:25 am
No sé cómo funciona el ColorTransform, pero creo que es un objeto de la clase Transform. Me imagino que podrás acceder a los valores de ese objeto llamándolo por su nombre. Si es así, para probar, a lo mejor puedes hacer un trace del objeto, a ver qué valor te da. Algo similar a esto:

Código :

trace(color3.transform.colorTransform);

No sé si esto funcionaría, pero prueba por si acaso. Si funciona, siempre puedes meter en el formulario una variable "color3=el valor que te haya dado el trace".

Si esto no funciona, una opción es que al movieclip le metas una variable en la que guardes el color, para recuperarla a la hora de enviar el formulario. Tampoco estoy muy seguro de que funcione, pero prueba por si acaso.

No sé si entiendo tu código correctamente, pero me parece que uno de los movieclips es color1. si es así, puedes meterle una variable llamada colorValue de esta forma

Código :

Blanco1.addEventListener(MouseEvent.CLICK, blanco001);
function blanco001(evento:MouseEvent):void{
color1.transform.colorTransform = blanco;
color1.colorValue="blanco";
}

Así siempre podrías incorporar al formulario el siguiente valor:

Código :

envio.color1=color1.colorValue;

y repetir esto con el resto de movieclips que tengas.

Recuerda que esto te lo digo "de puntillas", porque no estoy muy ducho en AS3 y no estoy seguro de que funcione, pero si lo hace o, por lo menos, te sirve de pista, pues contento me quedo.

Un saludo.

Por CidDeMizar

81 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ago 2011 09:02 am
buenas,

gracias CidDeMizar por contestar tan rapido!!!

Dices que no sabes mucho de as3, pero es que yo no se NADA!!!!

Bueno, he probado las opciones que dabas, con el trace se consige que diga cual es el color elegido pero lo hace descomponiendo en color en ocho parametros lo cual podria llegar a dar lugar a error cuando ya se trabaje con la pagina y esos datos los interprete una persona. Ademas tampoco se como recuperar esos datos para enviarlos con el formulario.

Con la otra opción, despues de añadir las dos partes nuevas de codigo, me da un error que dice que en la linea 81 (la que acabo de añadir al codigo del formulario) Acceso a una propiedad color1 no definida.

Creo van por ahi tiros pero, como ya he dicho anteriormente, soy tan torpe que no se ni interpretar los errores.

Gracias de nuevo

Saludos
Raul

Por proriders

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 29 Ago 2011 09:50 am
Pues vaya. He probado a hacer la última opción que te he dado y sí me aparece el valor asociado al movieclip. Esos movieclips que tienes (color1, color2, etc) ¿están echos a mano o por programación?

Por CidDeMizar

81 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ago 2011 09:52 am
son bmp convertidos a movieclip en flash

Por proriders

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 29 Ago 2011 10:31 am
Espera, que a lo mejor la he cagado yo. Puede ser que el nombre de variable que te he dado no sea válido porque ya existe.

prueba esto:

Código :

Blanco1.addEventListener(MouseEvent.CLICK, blanco001);
function blanco001(evento:MouseEvent):void{
color1.transform.colorTransform = blanco;
color1.colorValue="blanco";
}

y para el envío:

Código :

envio.colorValue1=color1.colorValue;

Si te fijas, lo único que he hecho ha sido cambiar el nombre de la variable del objeto envío. Prueba a ver si te vale.

Por CidDeMizar

81 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ago 2011 10:46 am
me sigue dando el error de antes:
Acceso a una propiedad color1 no definida. Dentro del código del formulario en la linea que acabo de añadir

Por proriders

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 29 Ago 2011 06:40 pm
En un ejemplo que he encontrado es este codigo


//Enviamos las variables a registrar.php
form_lv.sendAndLoad("registrar.php", form_lv, "POST");


como lo uso??? cambio registrar.php por mail.php y form_lv por mi variable??

Por proriders

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 29 Ago 2011 09:04 pm
Ese código creo que es de AS2 y no sería compatible con AS3.

Volviendo al tema de la variable, haz una prueba: en un flash vacío crea un movieclip con alguna de las imágenes que tienes. En el nombre de instancia le pones color1. Luego, en el mismo frame, pon:

Código :

color1.colorValue="blanco";
trace(color1.colorValue);

En la pantalla de salida debería aparecerte el mensaje "blanco".

Si es así, entonces el código que te he dado para meter una variable en el movieclip debería ser correcto, así que deberías revisar cómo has insertado la variable en la otra película.

Yo lo he probado y, en principio me funciona.

A ver si hay suertecilla.

Por CidDeMizar

81 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ago 2011 10:42 pm
Joder que burro soy!!!!!

Muchas gracias, CidDeMizar como bien decias el codigo que pusiste al principio funciona bien, el problema estaba en que tenia un codigo en un fotograma por el que la pelicula nunca pasaba... si es que soy muy burro!!!!

Mil gracias

Por proriders

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 30 Ago 2011 08:13 am
Espero que así se te resuelva el problema.

Venga, compañero. ¡Suerte!

Por CidDeMizar

81 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.