A mí me pasa. Creo que a tí te pasa. Espero que a muchos les pase.
En un mundo donde faltan buenas ideas, a las personas que tienen ideas les falta tiempo para realizarlas.
¿Cuántas veces se escucha o se dice ‘esa idea era mía’?
Gracias a este proyecto ahora podrás certificar que así fue. La ‘idea’ (con derechos de autor, hahaha o por lo menos de dmca) es que cuando tengas una de esas brillantes ideas en lugar de escribirla en un “post it” o en una “nota en la compu” o “enviartela por email” (para luego nunca verla) es que abras tu aplicación. Ahí podrás ir apuntando todo lo relativo a tú idea y al final “sellarla” ese sello lo que dará será una certificación de la fecha en la que guardaste la idea – la cual si no lo quieres nunca será publicada, así nadie te robará la idea (ya estamos averiguando temas de encripción termo nuclear cuántica para guardar los datos de manera más segura que simplemente transformarlos en ceros y unos) y te quedarás tranquilo hasta que alguien más la haga realidad y entonces puedas decir con certeza y fecha que esa “era tu idea”.
Ya me dirán si les gusta.
Saludos, Gorka
P.D. – si la idea era de ustedes espero me lo hagan saber, así podemos trabajar en equipo para la realización…
P.D. 2 - Osea, esta app es la estampa de respaldo. No es copright y no es para que puedas demandar a nadie, es sólo para que puedas comprobar (digamos a tus amigos o novia, etc) que la idea sí la tuviste!
Sin abusar mucho (y no entrar a detalles MUY técnicos de OOP) estoy utilizando una clase de la librería de Flash AS3 que me permite instanciar clases de manera dinámica. Es una manera muy cómoda de eficientar procesos repetitivos (y de continuar con las ventajas de OOP como el polimorfismo) que nunca pensé que llegaría a utilizar (porque acostumbro declarar directamente las clases que voy a usar como propiedades privadas pero quise ver si podía quitar mucho código que se repetía sin sentido y encontré esta manera:
var referencia_clase:Class = getDefinitionByName(string_clase) as Class;
instancia = new referencia_clase();
// si se preguntan por qué la instancia no tiene declaración formal es porque antes está declarada como un objeto “dinámico/genérico” que vía polimorfismo puedo reusar para distintas clases
Necesita un string con el nombre de la clase con lo que se hace una referencia a la misma y luego esa misma referencia se usa para instanciar el objeto de la clase en sí.
Con eso ya se tiene acceso (vía el objeto) a todos los métodos y propiedades.
PERO…
Por la manera en la que trabaja el compilador de Flash (en mi caso versión cs5.5) cuando se usa un “import” para traer clases a memoria para luego instanciarlas, el compilador sólo agrega a memoria las clases que sí tienen una llamada real (no hace falta instancia, puede ser nada más la referencia: var obj_clase:Nombre_Clase;). Eso quiere decir que las clases que uno querría llamar de manera dinámica NO ESTÁN en memoria y por lo tanto cuando se ejecuta el código se tira un error de ejecución de variable nula. Es un bug? No creo, es más como un loophole curioso ya que si con el import sí se trajeran a memoria las clases que se piden entonces el compilador perdería una super ventaja que tiene de eficientar las llamadas reales que tiene que hacer.
Entonces cómo se resuelve esto? Como lo puse arriba: haciendo una referencia como propiedad dentro de la clase que va a usar el getDefinitionByName => var referencia:Clase_Dinamica;
Aunque esto implica que se tienen que agregar todas las clases que se van a usar de manera dinámica una por una, aún así se puede aprovechar la función getDefinitionByName para eficientar códigos (igual habría que hacer realmente un benchmark de uso de recursos de instancias reales vs. referencia clases e instanciación de una en una para ver qué camino es mejor).
Espero esto ayude a aquellos que querían usar el método y les mandaba el error:
ReferenceError: Error #1065: Variable nombre_de_la_clase is not defined
La idea: estás viendo una pelicula o una serie de televisión (es más hasta una revista), no sabes como se llama el actor/actriz que está frente a tí, así que sacas tu iphone abres tu app de Who’s that dude? enfocas su cara y puf! magicamente te saca los datos del actor de IMDB. En la pantalla del iphone saldría un cuadro donde tienes que poner la cara del actor (y esto puede ser difícil si las cosas se están moviendo pero eventualmente podemos hacer que sólo con que se vea la cara en la pantalla se le reconozca.
La idea es que la app manda fotos de la cara a un servidor, este servidor se encarga de hacer el reconocimiento (con una base de datos de caras y celebridades preparada desde antes) y cuando encuentra un match manda pedir los datos a algún servicio de IMDB (hay que revisar que exista esto o sino usar su feed de XML o sino hasta parsear sus HTML’s) y eso se enseña al usuario en el iphone.
¿Qué necesito para hacer esto?
funcionalidad de web (es decir si para que esto funcione sea WIFI o 3G el dispositivo tiene que estar conectado a Internet)
programa que se encargue del reconocimiento facial y que tenga una base de datos (esto no es taan fácil y la base de datos puede ser MUY grande así que hay que calcular y organizar bien esta parte)
programa o script que se conecta a IMDB una vez que se sabe que actor/actriz es y que obtiene los datos del mismo
funcionalidad básica de app (secciones, botonería, eventos, etc)
Tengo ya varias ideas de cómo hacer la parte del servidor del reconocimiento facial, pero hasta que haga pruebas prefiero no contar demasiado.
Eventualmente si sale este proyecto, voy a hacer uno similar que use los datos y fotos de Facebook y que funcione para cualquier persona pública.
La idea es sencilla y divertida: se ve la sombra generada por una estaca (virtual) en un círculo con referencias horarias. Lo divertido es que planeo usar técnicas de realidad aumentada para lograr que la dirección y grado de la misma sean congruentes con la manera y posición del smartphone. Es decir que para que funcione correctamente tendría que estar apuntando al norte y completamente plano, pero si no es así de todas maneras algún resultado tendrá.
En una futura actualización hasta me podría conectar a un sistema de clima y si el lugar se encuentra nublado hasta podría considerar moderar la intenisdad de la sombra generada.
¿Qué necesito para hacer esto?
funcionalidad de brújula interna (para saber cuando apunta al norte – punto cero)
funcionalidad de giroscopio (para saber cuando está completamente plano – punto cero)
funcionalidad de hora (para cálculos a la hora de desplegar la sombra y si es que hay sombra – que pasa si lo ven bocaabajo)
funcionalidad básica de app (secciones, botonería, eventos, etc)
Diseño:
si alguien se la rifa ayudándome con esto sería muy chido, sino ahí a ver qué hago..
Un proyecto más a la lista, también es sencillo y ya usa un par de técnicas más avanzadas así que será un resultado divertido.
Para uno de mis proyectos (y lo más seguro es que para todos eventualmente) me encontré con la necesidad de poner un texto en un espacio más chico del total del texto, esto simple y sencillamente se soluciona habilitando un scrollbar.
La onda fue que al hacer uso del Componente que ya existe en flash de scrollbar me vino la duda si a la hora de enviarlo al iphone se vería de manera “nativa” o si mantendría el aspecto de flash. Al hacer las pruebas ví que mantenía el aspecto típico, y eso no me gustó nada porque le quita “usabilidad” (al no usar controles nativos a los que los usuarios ya se van acostumbrando – OJO gracias al desarrollo de apps para ios en flash y as3 se pueden recrear TODOS los controles que se quiera y a veces es bueno para innovar, pero en este caso es algo tan sencillo que no valía la pena recrearlo todo).
Busqué un rato en web y no encontré nada para iOS, hay muchos sí para AS3 pero simplemente para aplicaciones o web nada para mobile. Intenté trucar el componente que viene con flash y no sirvió de mucho, así que tuve que ponerme a hacer esto por código propio desde cero.
Resultó algo muy fácil, es una simple clase que al instanciar se le tienen que dar dos parametros: 1.- el movieclip origen (esto para que tenga acceso al stage y así pueda usar addChild) y 2.- la caja de texto a la que se le va a poner el scrollbar.
Notas
Es deficiente en el sentido que no tiene animaciones fluídas para moverse ni para hacer fade in o fade out según su uso.
Nada más funciona en sentido vertical (con unos pocos cambios se puede hacer horizontal, pero en mobile nunca he visto eso).
Por ahora sólo funciona con TextField’s (con otros pocos cambios se le puede hacer funcionar con cualquier control/componente/movieclip).
Seguramente se puede eficientar el proceso y agregar un par de listeners para que se integre aún mejor, pero con lo que es funciona y funciona muy bien.
Desde el constructor se puede controlar toda la “vista” o aspecto del scrollbar.
package{importflash.display.MovieClip;importflash.display.Shape;importflash.events.*;importflash.text.TextField;publicclassComponentVerticalScrollbar{// ——- Constructor ——-publicfunctionComponentVerticalScrollbar(obj_home:MovieClip,obj_text_field:TextField,num_width:Number=5,num_round_w:Number=2,num_round_h=2,num_alpha:Number=.5,num_color:Number=0xCCCCCC){referencia_home=obj_home;objeto_text_field=obj_text_field;varnumber_position_x:Number=objeto_text_field.x+objeto_text_field.width;objeto_text_field.width-=10;varnumber_position_y:Number=objeto_text_field.y;varnum_height:Number=Math.floor(objeto_text_field.height/objeto_text_field.maxScrollV);if(num_height<20){num_height=20;}round_square_trackbar=newShape();round_square_trackbar.graphics.lineStyle(0,num_color,0,false);round_square_trackbar.graphics.beginFill(num_color);round_square_trackbar.graphics.drawRoundRect(number_position_x,number_position_y,num_width,num_height,10,10);round_square_trackbar.graphics.endFill();round_square_trackbar.alpha=num_alpha;referencia_home.addChild(round_square_trackbar);objeto_text_field.addEventListener(Event.SCROLL,handler_scroll);}// ——- Properties ——-privatevarreferencia_home:MovieClip;privatevarobjeto_text_field:TextField;privatevarround_square_trackbar:Shape;// ——- Methods ——-privatefunctionhandler_scroll(event:Event):void{// hago el indice actual basados en cerovarnumber_actual:Number=objeto_text_field.scrollV–1;varnumber_total:Number=objeto_text_field.maxScrollV–1;round_square_trackbar.y=((number_actual)/(number_total)*objeto_text_field.height)–(number_actual/number_total*round_square_trackbar.height);}}}
La idea es sencilla: al terminar de estacionar el coche abres en tu iphone la app, esperas que te geolocalice y luego marcas el lugar donde estás con el coche. Vas y haces lo tuyo (sea fiesta, trabajo, lo que sea..), cuando sales de tu “evento” prendes la app de nuevo en la opción de guía y te enseña una brújula con una flecha en dirección a tu coche.
¿Qué se necesita para hacer esto? (sin entrar a detalles de computadoras, aparatos y programas de desarrollo, sino más bien en cuanto a procesos)
Funcionalidad de geolocalización (vía gps integrado en el smartphone)
Funcionalidad de guardar datos en memoria
Funcionalidad de transformar datos actuales de geolocalización contra datos fijados en una simple dirección
Funcionalidad de aviso de ya llegamos
Funcionalidad básica de app (cambiar secciones, botonería, eventos, etc)
En una actualización se puede agregar funcionalidad que te guíe tomando en cuenta calles y edificios (ya que esta versión seguro te pide que atravieses paredes para llegar directamente).
Es un proyecto sencillo, espero poder darme unas horas para llevarlo a cabo y tenerlo listo para luego subirlo al app Store y que lo puedan descargar y jugar con el.