RyF Framework v2
Pablo Alejandro BALEZTENA
[email protected]
Leonardo ISASMENDI
[email protected]
Version 0.1, Noviembre 2012
Índice general
1. Introducción
2. Aplicación Simple en RyF Framework
.
.
.
.
2.1. Estructura de RyF .
.
2.1.1. Objetos en Lua .
2.1.2. Estructura de Clases
2.1.3. Configuración .
2.1.4. Widgets .
.
2.1.5.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Jerarquía de directorios de una aplicación típica . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Aplicación simple .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Hello World!
2.2.2. Stages y MainStage .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.3. Agregando MainStage al StageLoader . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
3. Configuración Básica
.
.
.
3.1. Modules .
.
3.2. StagesLoader
.
3.3. FrameworkConfig .
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Widgets
.
.
.
.
.
.
.
.
4.1.
Imágenes
.
.
.
4.2. Texto .
.
4.3. Contenedores .
.
4.4. Listas de Seleccion .
.
4.5. Definidos por el usuario .
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5. Módulos adicionales
.
5.1. GlobalWidgetPool
.
.
5.2. SimpleEvent .
.
5.3. Timer
.
.
.
.
5.4. Tools .
.
5.5. Connection .
.
.
5.6. LoadingAnimation .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I
1
4
4
4
5
7
8
9
9
9
10
11
12
12
13
14
15
15
15
16
16
17
20
20
21
21
22
22
23
ÍNDICE GENERAL
5.7. EditingCommand .
5.8. EventManager .
.
.
.
Interactividad .
.
.
.
5.8.1.
6. Apéndice
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1. Módulos adicionales NCL y Lua . . . . . . . . . . . . . . . . . . . . . . . . .
applicationBase.ncl y connectorBase.ncl . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
applicationBase.ncl con interactividad . . . . . . . . . . . . . . . . . .
6.1.1.
6.1.2. main.lua .
6.1.3.
.
.
.
.
II
23
24
25
27
27
27
29
29
Listings
.
.
.
.
.
.
.
.
.
.
2.1. Definición de nueva clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. HelloWorld - MainStage .
2.3. HelloWorld - StageLoader
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1. CONFIG - Modules .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
shared/scripts/chapter3/Modules.lua . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. CONFIG - StagesLoader
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. CONFIG - FrameworkConfig . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
4.1. Ej Widget Image
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
4.2. Ej Widget Texto .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Ej Widget Container
.
4.4. Ej Widget SelectionList .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
4.5. Codigo Widget Menu .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6. Ej Widget Menu .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1. módulo Adicional - GlobalWidgetPool . . . . . . . . . . . . . . . . . . . . . .
.
5.2. Ej Widget SimpleEvent .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
5.3. Ej Widget Timer
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4. Ej Módulo Tools
.
5.5. Ej módulo Connection .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6. Ej Widget LoadingAnimation . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.7. Ej Widget EditingCommand . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.8. HelloWorld - MainStage Interactivo . . . . . . . . . . . . . . . . . . . . . . .
.
.
6.1. applicationBase.ncl
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
6.2. connectorBase.ncl .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3. main.lua .
.
.
.
6.4. applicationBase.ncl + int
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
4
10
11
12
13
13
14
15
16
16
16
17
19
20
21
21
22
22
23
23
25
27
28
29
29
III
Capítulo 1
Introducción
RyF Framework 2 es un framework para desarrollo de aplicaciones para Ginga.AR, desarro-
llado por completo en el lenguaje de scripting LUA, en cumplimiento de la norma de radiodifu-
sión de Televisión Digital Terrestre (norma) y diseñado para desarrollar rápidamente aplicacio-
nes grandes.
La principal característica del mismo es la velocidad de desarrollo y la escalabilidad que
nos otorga. Podemos desarrollar aplicaciones realmente complejas en cuestión horas con la se-
guridad de que las mismas funcionarán tanto en los dispositivos STB como en las plataformas
Móviles (como las netbooks) sin tener que realizar trabajo de más.
Esta ventaja viene con un pequeño contra que es el peso adicional de la aplicación. Para
aplicaciones grandes este peso adicional es imperceptible. Pero para una aplicación pequeña, si
bien la facilidad de desarrollo también aumenta en gran medida, el incremento de espacio en
memoria requerido puede llegar a ser indeseable.
RyF 2.0 está en desarrollo desde diciembre del 2011 y ha sido utilizado una gran cantidad de
veces en el desarrollo de aplicaciones para la Televisión Digital Terrestre, tanto de prueba como
comerciales. Algunas de las aplicaciones fueron:
Aplicación
Cines
Imagen
de
Features
-Canal
Re-
torno(Obtención de
información)
-HTML(mostrar
paginas)
-Widgets Comple-
jos (SelectionList)
Link
http://www.
youtube.
com/watch?v=
OAFK9nNYU3k
Cuadro 1.1: Apps usando RyF 2.0
1
CAPÍTULO 1. INTRODUCCIÓN
2
Link
http://www.
youtube.
com/watch?v=
qRd6-i_smi8
http://www.
youtube.
com/watch?v=
19AdneVQp4I
http://www.
youtube.
com/watch?v=
BNzoiXKINB0
http://www.
youtube.
com/watch?v=
wnwFSQtf0EU
Imagen
Aplicación
Dengue
Clima
Info Salud
Por
Viaja
Buenos
Aires
Features
-Códigos QR para
relación con segun-
da pantalla
-Widgets Comple-
jos Definidos por el
usuario (Dentro del
juego)
-Canal de Retorno
(Actualizaciones)
Com-
-Editing
mands (Señales de
emergencia)
-Widgets Definidos
por
el Usuario
(Provincias)
-Información basa-
da en tablas (auto-
generación de da-
tos)
-Widgets Comple-
jos (SelectionList,
DataWidget)
-Canal de Retorno
(Actualización de
datos)
-Información basa-
da en tablas (auto-
generación de da-
tos)
Com-
-Editing
mands
(Emergen-
cias y actualizacio-
nes forzadas)
Cuadro 1.2: Apps usando RyF 2.0
CAPÍTULO 1. INTRODUCCIÓN
3
Imagen
Aplicación
Presupuesto
Participativo
TweetFeeder
Features
-Información basa-
da en tablas (auto-
generación de da-
tos)
-Widgets Comple-
jos (SelectionList)
-Canal de Retorno
(Obtención de da-
tos)
-Widgets Comple-
jos
(TweeterFeed,
WidgetOption)
Link
http://www.
youtube.
com/watch?v=
yzSgitZ-1Ig
http://www.
youtube.
com/watch?v=
0kCiwNKjTYw
Cuadro 1.3: Apps usando RyF 2.0
Capítulo 2
Aplicación Simple en RyF Framework
En este Capítulo se explicara la estructura de RyF Framework y luego se mostrará un ejemplo
paso a paso de una aplicación simple en RyF 2.0. El mismo abarca como hacer las configuracio-
nes más básicas y necesarias para poder ejecutar la aplicación sin problemas y el uso más simple
de los widgets #Image y #Text.
Para una explicación más profunda de las configuraciones disponibles ir al Capítulo 3 en la
página 12. o al Capítulo 4 en la página 15 sobre los widgets.
2.1. Estructura de RyF
Antes de mostrar un ejemplo concreto, vamos a comentar brevemente qué puede encontrarse
dentro de los directorios de la aplicación y dar un explicación muy corta de para qué sirve cada
cosa. Todo esto será profundizado en los capítulos subsiguientes.
2.1.1. Objetos en Lua
En el framework tenemos un sistema de objetos con herencia simple y sobrescritura de
métodos. Para definir una nueva clase utilizamos el siguiente código:
Listing 2.1: NuevaClase.lua
1 module (’NuevaClase’, package.seeall)
2 NuevaClase = {
3 }
setmetatable(NuevaClase,Object)
4
5 NuevaClase.__index = NuevaClase
6 NuevaClase.super = Object
7
8
9
10
11
12 end
self.super.Init(self)
−−Instance Atributes Initialization
_G.NuevaClase = NuevaClase
function NuevaClase:Init()
4
CAPÍTULO 2. APLICACIÓN SIMPLE EN RYF FRAMEWORK
5
Al utilizar setmetatable(NuevaClase,Object) decimos efectivamente que NuevaClase va a he-
redar todos los métodos y atributos de la clase Object. 1
Para sobrescribir métodos simplemente definimos nuevamente el método y este queda efec-
tivamente re-definido.
2.1.2. Estructura de Clases
El framework basa su funcionamiento en representar los estados de la aplicación mediante
objetos llamados Stages. Estos objetos obtienen de a uno el control de la aplicación y mediante
una maq
Comentarios de: RyF Framework v2 (0)
No hay comentarios