Foros del Web » Creando para Internet » Flash y Actionscript »

Ayuda con AS3

Estas en el tema de Ayuda con AS3 en el foro de Flash y Actionscript en Foros del Web. Hola, necesitaria saber como resolver esto, debe ser una cuestion muy simple pasa que ya he intentado todo. El codigo basico que uso es este ...
  #1 (permalink)  
Antiguo 29/10/2010, 07:16
 
Fecha de Ingreso: junio-2008
Mensajes: 43
Antigüedad: 15 años, 10 meses
Puntos: 0
Ayuda con AS3

Hola, necesitaria saber como resolver esto, debe ser una cuestion muy simple pasa que ya he intentado todo. El codigo basico que uso es este de aca abajo.

var med:Number;

med=text1.text;

bt1.addEventListener(MouseEvent.CLICK,prueba);

function prueba(MouseEvent:Event):void{
text1.text=text1.text + med/91.4;


}

La idea es ingresar un numero y al presionar el boton haga el calculo, pero no me deja ya que solo me acepta variables "String".

El codigo de error es el siguiente:

1067: Implicit coercion of a value of type String to an unrelated type Number.

El text1 es el nombre del TextInput o sea para ingreso de datos. Lo que quiero hacer es usar ese TextInput y luego con la funcion cuando haga click en el boton me lo convierta (por ejemplo que el numero que escribo en este caso variable med, me lo divida en 91.4 y me lo muestre en el mismo TextInput), pero ya he intentado todo y no me deja usar Number; ni int;

Espero que me puedan ayudar ya que no tengo ni idea de como resolverlo, muchas gracias.
  #2 (permalink)  
Antiguo 29/10/2010, 08:17
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Respuesta: Ayuda con AS3

Si recoges el valor de un campo de entrada de texto será por defecto un valor de tipo String. Por lo tanto:

Código:
med = Number(text1.text);
Por otra parte deberás controlar que el usuario no pueda entrar caracteres no numéricos.

Saludos!
__________________
Los ignorantes se empeñan en enseñar. Los sabios en aprender.
SourceForge
  #3 (permalink)  
Antiguo 29/10/2010, 09:13
 
Fecha de Ingreso: junio-2008
Mensajes: 43
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda con AS3

Muchas gracias, lo que dijiste al final funciona con un text1.restrict?
  #4 (permalink)  
Antiguo 29/10/2010, 10:15
 
Fecha de Ingreso: junio-2008
Mensajes: 43
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda con AS3

var med:Number;

med=Number(text1.text);
text1.restrict=("0-9,.");

bt1.addEventListener(MouseEvent.CLICK,prueba);

function prueba(MouseEvent:Event):void{
text1.text=String(med/91.4);


}

asi quedo la prueba, el problema que tengo ahora es que ingreso un numero y siempre que quiero que lo divida me da 0.

Como puedo hacer para que me de el resultado que le estoy pidiendo?

Muchas gracias.
  #5 (permalink)  
Antiguo 29/10/2010, 11:46
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Respuesta: Ayuda con AS3

Por favor usen el highlight de código para que podamos leerlo mas fácilmente, es fácil solo pongan el código entre

[ HIGHLIGHT="actionscript" ]
Su codigo
[ /HIGHLIGHT ]

Quitando los espacios entre los [ ]

Ahora, estas asignando la variable med antes de que se inserte texto en el campo, la asignación del valor debe ser cuando el usuario de click en el botón, así quedaría

Código actionscript:
Ver original
  1. var med:Number;
  2. text1.restrict=("0-9,.");
  3. bt1.addEventListener(MouseEvent.CLICK,prueba);
  4. function prueba(MouseEvent:Event):void
  5. {
  6.     med = Number(text1.text);
  7.     trace( "med " + med );
  8.     text1.text = String( med /91.4 );
  9. }

Saludos!
  #6 (permalink)  
Antiguo 29/10/2010, 11:58
 
Fecha de Ingreso: junio-2008
Mensajes: 43
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda con AS3

Muchas gracias sos un verdadero genio.
  #7 (permalink)  
Antiguo 30/10/2010, 11:27
 
Fecha de Ingreso: junio-2008
Mensajes: 43
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda con AS3

Bueno continuando con el problema, ahora tengo otro temita que necesitaria que me puedan ayudar, el problema es que no puedo hacer que al segundo click en el mismo boton me aparezca "NaN" (valor por defecto del String), ya que quiero que al segundo click, vuelva el contador a "0" o a "campo vacio", y tambien estoy tratando de que cuando por ejemplo quiero transformar un numero a Yardas y luego a Metros, se transforme automaticamente al hacer click en el boton y no haga un "NaN". Ya probe de todo condicionales y selectores, incluso probe hacer otra variable para verificar el estado pero nada, en Basic era re facil hacerlo, aca me esta costando muchisimo. Si alguien me puede ayudar le estaria agradecido.


Código actionscript:
Ver original
  1. var med:Number, mdi:String;
  2.  
  3. text1.restrict=("0-9,.");
  4.  
  5. bt1.addEventListener(MouseEvent.CLICK,yardas);
  6. function yardas(MouseEvent:Event):void{
  7. med = Number(text1.text);
  8. if (text1.text != ""){
  9. mdi = " Yardas";
  10. med = Number(text1.text);
  11. text1.text = String( med / 91.4) + mdi;
  12. }else{
  13. mdi = "";
  14. med = Number(text1.text);
  15. text1.text = "";
  16. }
  17. }
  18.  
  19. bt2.addEventListener(MouseEvent.CLICK,pulgadas);
  20. function pulgadas(MouseEvent:Event):void{
  21. med = Number(text1.text);
  22. if (text1.text != ""){
  23. mdi = " Pulgadas";
  24. med = Number(text1.text);
  25. text1.text = String( med / 2.54 ) + mdi;
  26. }else{
  27. mdi = "";
  28. med = Number(text1.text);
  29. text1.text = "";
  30. }
  31. }
  32.  
  33. bt3.addEventListener(MouseEvent.CLICK,pies);
  34. function pies(MouseEvent:Event):void{
  35. med = Number(text1.text);
  36. if (text1.text != ""){
  37. mdi = " Pies";
  38. med = Number(text1.text);
  39. text1.text = String( med / 31) + mdi;
  40. }else{
  41. mdi = "";
  42. med = Number(text1.text);
  43. text1.text = "";
  44. }
  45. }
  46.  
  47. bt4.addEventListener(MouseEvent.CLICK,metros);
  48. function metros(MouseEvent:Event):void{
  49. med = Number(text1.text);
  50. if (text1.text != ""){
  51. mdi = " Metros";
  52. med = Number(text1.text);
  53. text1.text = String( med / 100 ) + mdi;
  54. }else{
  55. mdi = "";
  56. med = Number(text1.text);
  57. text1.text = "";
  58. }
  59. }
  60.  
  61. if (text1.text != ""){
  62. mdi = "";
  63. med = Number(text1.text);
  64. text1.text = "";
  65. }
  66.  
  67. addChild(text1);

Última edición por HmrO; 30/10/2010 a las 12:52
  #8 (permalink)  
Antiguo 30/10/2010, 15:45
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ayuda con AS3

Cita:
Iniciado por HmrO Ver Mensaje
Bueno continuando con el problema, ahora tengo otro temita que necesitaria que me puedan ayudar, el problema es que no puedo hacer que al segundo click en el mismo boton me aparezca "NaN" (valor por defecto del String), ya que quiero que al segundo click, vuelva el contador a "0" o a "campo vacio", y tambien estoy tratando de que cuando por ejemplo quiero transformar un numero a Yardas y luego a Metros, se transforme automaticamente al hacer click en el boton y no haga un "NaN". Ya probe de todo condicionales y selectores, incluso probe hacer otra variable para verificar el estado pero nada, en Basic era re facil hacerlo, aca me esta costando muchisimo. Si alguien me puede ayudar le estaria agradecido.


Código actionscript:
Ver original
  1. var med:Number, mdi:String;
  2.  
  3. text1.restrict=("0-9,.");
  4.  
  5. bt1.addEventListener(MouseEvent.CLICK,yardas);
  6. function yardas(MouseEvent:Event):void{
  7. med = Number(text1.text);
  8. if (text1.text != ""){
  9. mdi = " Yardas";
  10. med = Number(text1.text);
  11. text1.text = String( med / 91.4) + mdi;
  12. }else{
  13. mdi = "";
  14. med = Number(text1.text);
  15. text1.text = "";
  16. }
  17. }
  18.  
  19. bt2.addEventListener(MouseEvent.CLICK,pulgadas);
  20. function pulgadas(MouseEvent:Event):void{
  21. med = Number(text1.text);
  22. if (text1.text != ""){
  23. mdi = " Pulgadas";
  24. med = Number(text1.text);
  25. text1.text = String( med / 2.54 ) + mdi;
  26. }else{
  27. mdi = "";
  28. med = Number(text1.text);
  29. text1.text = "";
  30. }
  31. }
  32.  
  33. bt3.addEventListener(MouseEvent.CLICK,pies);
  34. function pies(MouseEvent:Event):void{
  35. med = Number(text1.text);
  36. if (text1.text != ""){
  37. mdi = " Pies";
  38. med = Number(text1.text);
  39. text1.text = String( med / 31) + mdi;
  40. }else{
  41. mdi = "";
  42. med = Number(text1.text);
  43. text1.text = "";
  44. }
  45. }
  46.  
  47. bt4.addEventListener(MouseEvent.CLICK,metros);
  48. function metros(MouseEvent:Event):void{
  49. med = Number(text1.text);
  50. if (text1.text != ""){
  51. mdi = " Metros";
  52. med = Number(text1.text);
  53. text1.text = String( med / 100 ) + mdi;
  54. }else{
  55. mdi = "";
  56. med = Number(text1.text);
  57. text1.text = "";
  58. }
  59. }
  60.  
  61. if (text1.text != ""){
  62. mdi = "";
  63. med = Number(text1.text);
  64. text1.text = "";
  65. }
  66.  
  67. addChild(text1);
ehm, pues los botones estan funcionando,
pero pues me parece que podrías mejorar lo
que quieres hacer, inspirate por aquí
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #9 (permalink)  
Antiguo 31/10/2010, 13:43
 
Fecha de Ingreso: junio-2008
Mensajes: 43
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda con AS3

Ya solucione varios temitas ahora necesito que esto ande no se donde me equivoque cuando mando todo el codigo al switch case no hace nada.

Código ActionScript:
Ver original
  1. var med:Number, mdi:String, op:int, tot:String;
  2.  
  3. text1.restrict=("0-9,.");
  4.  
  5. bt1.addEventListener(MouseEvent.CLICK,yardas);
  6. function yardas(MouseEvent:Event):void{
  7. op=1
  8. }
  9.  
  10. bt2.addEventListener(MouseEvent.CLICK,pulgadas);
  11. function pulgadas(MouseEvent:Event):void{
  12. op=2
  13. }
  14.  
  15. bt3.addEventListener(MouseEvent.CLICK,pies);
  16. function pies(MouseEvent:Event):void{
  17. op=3
  18. }
  19.  
  20. bt4.addEventListener(MouseEvent.CLICK,metros);
  21. function metros(MouseEvent:Event):void{
  22. op=4
  23. }
  24.  
  25. switch (op){
  26.     case 1:
  27.             med = Number(text1.text);
  28.             if (med > 0) {
  29.             mdi = " Yardas";
  30.             med = Number(text1.text);
  31.             text1.text = ( med / 91.4) + mdi;
  32.             }else{
  33.             mdi = "";
  34.             med = Number(text1.text);
  35.             text1.text = "";
  36.             }
  37.             tot=text1.text;
  38.             break;
  39.     case 2:
  40.             med = Number(text1.text);
  41.             if (med > 0){
  42.             mdi = " Pulgadas";
  43.             med = Number(text1.text);
  44.             text1.text = ( med / 2.54 ) + mdi;
  45.             }else{
  46.             mdi = "";
  47.             med = Number(text1.text);
  48.             text1.text = "";
  49.             }
  50.             tot=text1.text;
  51.             break;
  52.     case 3:
  53.             med = Number(text1.text);
  54.             if (med > 0){
  55.             mdi = " Pies";
  56.             med = Number(text1.text);
  57.             text1.text =( med / 31) + mdi;
  58.             }else{
  59.             mdi = "";
  60.             med = Number(text1.text);
  61.             text1.text = "";
  62.             }
  63.             tot=text1.text;
  64.             break;
  65.     case 4:
  66.                         med = Number(text1.text);
  67.             if (med > 0){
  68.             mdi = " Metros";
  69.             med = Number(text1.text);
  70.             text1.text = ( med / 100 ) + mdi;
  71.             }else{
  72.             mdi = "";
  73.             med = Number(text1.text);
  74.             text1.text = "";
  75.             }
  76.             tot=text1.text;
  77.             break;
  78. }
  79. addChild(text1);

Última edición por HmrO; 31/10/2010 a las 13:56
  #10 (permalink)  
Antiguo 01/11/2010, 00:27
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ayuda con AS3

Cita:
Iniciado por HmrO Ver Mensaje
Ya solucione varios temitas ahora necesito que esto ande no se donde me equivoque cuando mando todo el codigo al switch case no hace nada.

Código ActionScript:
Ver original
  1. var med:Number, mdi:String, op:int, tot:String;
  2.  
  3. text1.restrict=("0-9,.");
  4.  
  5. bt1.addEventListener(MouseEvent.CLICK,yardas);
  6. function yardas(MouseEvent:Event):void{
  7. op=1
  8. }
  9.  
  10. bt2.addEventListener(MouseEvent.CLICK,pulgadas);
  11. function pulgadas(MouseEvent:Event):void{
  12. op=2
  13. }
  14.  
  15. bt3.addEventListener(MouseEvent.CLICK,pies);
  16. function pies(MouseEvent:Event):void{
  17. op=3
  18. }
  19.  
  20. bt4.addEventListener(MouseEvent.CLICK,metros);
  21. function metros(MouseEvent:Event):void{
  22. op=4
  23. }
  24.  
  25. switch (op){
  26.     case 1:
  27.             med = Number(text1.text);
  28.             if (med > 0) {
  29.             mdi = " Yardas";
  30.             med = Number(text1.text);
  31.             text1.text = ( med / 91.4) + mdi;
  32.             }else{
  33.             mdi = "";
  34.             med = Number(text1.text);
  35.             text1.text = "";
  36.             }
  37.             tot=text1.text;
  38.             break;
  39.     case 2:
  40.             med = Number(text1.text);
  41.             if (med > 0){
  42.             mdi = " Pulgadas";
  43.             med = Number(text1.text);
  44.             text1.text = ( med / 2.54 ) + mdi;
  45.             }else{
  46.             mdi = "";
  47.             med = Number(text1.text);
  48.             text1.text = "";
  49.             }
  50.             tot=text1.text;
  51.             break;
  52.     case 3:
  53.             med = Number(text1.text);
  54.             if (med > 0){
  55.             mdi = " Pies";
  56.             med = Number(text1.text);
  57.             text1.text =( med / 31) + mdi;
  58.             }else{
  59.             mdi = "";
  60.             med = Number(text1.text);
  61.             text1.text = "";
  62.             }
  63.             tot=text1.text;
  64.             break;
  65.     case 4:
  66.                         med = Number(text1.text);
  67.             if (med > 0){
  68.             mdi = " Metros";
  69.             med = Number(text1.text);
  70.             text1.text = ( med / 100 ) + mdi;
  71.             }else{
  72.             mdi = "";
  73.             med = Number(text1.text);
  74.             text1.text = "";
  75.             }
  76.             tot=text1.text;
  77.             break;
  78. }
  79. addChild(text1);
y como sabes que llega al switch?
tal vez solo se ejecute la orden de
asignarle valor a op y luego termina
la función y no pasa al switch, razón por la cual
como dices, no pasa nada, solución? varias,
pero tal vez la más fácil para vos sea
encerrar el switch en una función que reciba
op como parámetro y luego desde cada función
llamar a dicha función nueva pasando op
suerte
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:41.