Intente hace unos días hacer un programa, iterativo, para converger a una cierta solución. Como no estoy muy familiarizado con el componente datagrid, utilicé 18 campos de texto dinámico donde se mostraban paso a paso los resultados de los cálculos; los primeros textos dinámicos dependian de un input_text, y los posteriores eran cálculos con los textos dinámicos anteriores. Todas las instrucciones las introduje en un boton con la acción de on (release) { con el fin de que, una vez asignados los valores a las variables que requería para arrancar, cada vez que presionara el botón se realizara una iteración.
Lo curioso de este problema, que talvez supongan que se trata de combinar strings con numbers accidentalmente, y que casi estoy seguro de que no es eso, es que sin modificar el código ni hacer ningún cambio aveces el programa funciona perfectamente aunque la mayoria de las veces arroja NaN. ¿Cómo es posible que suceda eso?
+ El código que utilice fué el siguiente:
- En el primer fotograma:
Código :
stop(); n_iter.text = "Empezar a iterar"; i = j = 1000; guardar.text = "Guardar";
-En el botón que asigna el valor de los input text a las variables antes de arrancar:
Código :
on (release){ guardar.text = "Guardado"; var u_1:Number = x1.text; var u_2:Number = x2.text; var u_3:Number = x3.text; var m_1:Number = m1.text; var m_2:Number = m2.text; var m_3:Number = m3.text; var k_1:Number = k1.text; var k_2:Number = k2.text; var k_3:Number = k3.text; i = 1000; j = 1000; }
- En el boton que incia la iteración:
Código :
on (release){ i_i.text = i/1000; j = i+1000; j_j.text = j/1000; i = j+1000; n_iter.text = "Seguir Iterando"; a_2.text = u_1; a_4.text = u_2; a_6.text = u_3; b_2.text = u_1*m_1; b_4.text = u_2*m_2; b_6.text = u_3*m_3; c_5.text = Number(b_6.text); c_3.text = Number(c_5.text)+Number(b_4.text); c_1.text = Number(c_3.text)+Number(b_2.text); d_1.text = Math.round(Number(c_1.text)/k_1*100000)/100000; d_3.text = Math.round(Number(c_3.text)/k_2*100000)/100000; d_5.text = Math.round(Number(c_5.text)/k_3*100000)/100000; e_2.text = Number(d_1.text); e_4.text = Number(e_2.text)+Number(d_3.text); e_6.text = Number(e_4.text)+Number(d_5.text); f_2.text = Math.round(u_1/Number(e_2.text)); f_4.text = Math.round(u_2/Number(e_4.text)); f_6.text = Math.round(u_3/Number(e_6.text)); u_1 = Math.round(Number(e_2.text)/Number(e_2.text)*100000)/100000; u_2 = Math.round(Number(e_4.text)/Number(e_2.text)*100000)/100000; u_3 = Math.round(Number(e_6.text)/Number(e_2.text)*100000)/100000; a2_2.text = u_1; a2_4.text = u_2; a2_6.text = u_3; b2_2.text = Math.round(u_1*m_1*1000)/1000; b2_4.text = Math.round(u_2*m_2*1000)/1000; b2_6.text = Math.round(u_3*m_3*1000)/1000; c2_5.text = Number(b2_6.text); c2_3.text = Number(c2_5.text)+Number(b2_4.text); c2_1.text = Number(c2_3.text)+Number(b2_2.text); d2_1.text = Math.round(Number(c2_1.text)/k_1*100000)/100000; d2_3.text = Math.round(Number(c2_3.text)/k_2*100000)/100000; d2_5.text = Math.round(Number(c2_5.text)/k_3*100000)/100000; e2_2.text = Number(d2_1.text); e2_4.text = Number(e2_2.text)+Number(d2_3.text); e2_6.text = Number(e2_4.text)+Number(d2_5.text); f2_2.text = Math.round(u_1/Number(e2_2.text)); f2_4.text = Math.round(u_2/Number(e2_4.text)); f2_6.text = Math.round(u_3/Number(e2_6.text)); u_1 = Number(e2_2.text)/Number(e2_2.text); u_2 = Number(e2_4.text)/Number(e2_2.text); u_3 = Number(e2_6.text)/Number(e2_2.text); }
Al presionar el botón "Empezar a iterar" muestra la iteracion 1 y 2, al volver a presionarlo muestra la iteracion 3 y 4 y asi sucesivamente hasta que se obtenga el resultado deseado.
Espero su ayuda, recomendaciones/consejos porfavor; soy muy nuevo en esto del flash.
Gracias!