DroidScript tiene un motor Rhino para procesar el código javascript, esto nos proporciona librerías, código ya probado para realizar las tareas mas básicas de cualquier lenguaje: cadenas de texto, arrays, flujo, variables, objetos, funciones y montones de tutoriales sobre cualquier tema. Es importante contar con librerías como underscore.org para realizar las tareas más compelas de forma muy sencilla.
En una aplicación sencilla no es problema el código, pocas lineas y punto. Cuando nuestra aplicación requiere algo de complejidad es necesario tener claros los actores que intervienen en la obra.
En la imagen anterior describo a mi entender los modulos básicos para contruir una aplicación compleja. En resources (recursos) tendremos las imagenes, sonidos, código diverso y otros "etceteras".
En la caja de la derecha del diagrama encontramos los tres bloques básicos en una app DroidScript, layout (los paneles maestros) controls (botones, listas, textos, imagenes, etc.) y por último lógic (la lógica de la aplicación) que podrá estar en diferentes ficheros.
Preparados para escribir nuestra primera app android ?
El infierno DroidScript
Bueno, es un infierno general en la programación de aplicaciones: minimizar la repetición de código. Veamos un ejemplo necesitamos cuatro botones para que el usuario indique la dirección:btnL = app.CreateButton( "Left", 0.2, 0.16 );
btnL.SetOnTouch( btn_l );
moveButtons.AddChild( btnL );
btnR = app.CreateButton( "Right", 0.2, 0.16 );
btnR.SetOnTouch( btn_r );
moveButtons.AddChild( btnR );
btnU = app.CreateButton( "Up", 0.2, 0.16 );
btnU.SetOnTouch( btn_u );
moveButtons.AddChild( btnU );
btnD = app.CreateButton( "Down", 0.2, 0.16 );
btnD.SetOnTouch( btn_d );
moveButtons.AddChild( btnL );
Ahora "refactoricemos" el código anterior para escribir menos y con la minima repetición. Una función generara nuestros botones, la misma para todos:
// generar botones
function getButton(target, label, w,h,callback){
var el = app.CreateButton( label, w, h );
el.SetOnTouch( callback );
target.AddChild( el );
return el;
}Y una única llamada crea cada una de nuestros cuatro botones:
btnL = getButton( moveButtons, "Left", 0.2, 0.16, btn_l );
btnR = getButton( moveButtons, "Rigth", 0.2, 0.16, btn_r );
btnU = getButton( moveButtons, "Up", 0.2, 0.16, btn_u );
btnD = getButton( moveButtons, "Down", 0.2, 0.16, btn_d );
Podemos enviar más parámetros: color de fondo, color de texto, posición, etc y la función aplicará todos los procesos al elemento, en una sola pasada.
Podemos enviar más parámetros: color de fondo, color de texto, posición, etc y la función aplicará todos los procesos al elemento, en una sola pasada.


No hay comentarios:
Publicar un comentario