Crear Fondo Flash para Sony Ericsson
Monday, August 3, 2009 3:49:15 AM
[/img] en http://www.se-planet.com/ encontré como hacer un fondo flash con reloj
en lugar de "copiar y pegar" voy a tratar de explicar como logre hacer mi fondo y agregarle unas cositas mas como día de la semana con un switch, batería y demás...
lo que necesitas conseguirte es el flash 8, si tenes flash mx no te va a servir ya que no tiene "flash lite" y el formato que se requiere es "flash lite 1.1" y no es lo mismo "flash 1" que "flash lite 1"
en segundo lugar lógicamente tu teléfono no solo tiene que soportar flash lite, sino que ademas tiene que tener la opción de poder utilizarlo como fondo, en mi k310@w200 para poder hacer aparecer esta opción tuve que aplicar un parche (crédito: se-planet) que lo podes encontrar aquí adjunto
tene en cuenta que necesitar tener conocimientos de:
-capas
-formato de fuentes (no voy a explicar que es y como se logra fuentes negritas)
-nodos
-objetos
-no necesariamente algo de programación en C
--Inicio y Preparación del Documento--
iniciamos macromedia flash 8
y esta es nuestra pantalla inicial donde simplemente cliqueamos en nuevo documento flash

y a continuación tenemos que preparar el documento para poder crear nuestro fondo, para eso tenemos que configurar el tamaño la versión de flash y demás, así que vamos al menú Modificar / Documento (o CTRL + J) y ajustamos el tamaño según nuestro teléfono, en mi caso 128x160 pixeles

luego al menú Archivo / Configuración de Publicación
en la pestaña Flash seleccionamos "Versión Flash lite 1.1"
esto es importante sino nuestro teléfono no reconocerá nuestro swf y simplemente quedara una imagen estática o directamente no mostrara nada

por ultimo antes de comenzar, menú Archivo / Configuración de Dispositivo
seleccionamos y añadimos alguno de los teléfonos y listo
esto sirve simplemente para que cuando probemos la película flash simule un teléfono.

listo, ya esta todo configurado
--Creación del Fondo--
si lo que quieren hacer es un protector de pantalla podemos trabajar libremente, pero a la hora de crear un fondo es importante saber la ubicación de los objetos para no superponerlos por ejemplo sobre la batería o sobre el nombre del operador, por eso yo voy a comenzar insertando una captura de mi teléfono
primero insertamos una nueva capa, eso lo hacemos siempre haciendo click sobre el boton que esta en la esquina inferior izquierda del cuadro de capas

luego sobre esa capa desplegamos el menú contextual (click derecho) elegimos propiedades y le damos un nombre ya que vamos a trabajar con muchas capas, de esta forma evitaremos confundirlas

por ultimo desde el menú Archivo / Importar / Importar a Escenario, elijo mi captura y acepto
(mas adelante le agregaremos un fotograma)

ahora si comenzamos a crear nuestro fondo Flash
-Reloj
comencemos por el reloj.
estos pasos son importantes y se repiten tanto para crear un reloj, día, batería etc.... solo cambia el código de programación y las fuentes que agregamos.
lo primero que vamos a hacer es crear nuestra capa para el reloj, y renombrarla, yo use el nombre RELOJ
luego seleccionamos la herramienta TEXTO, dibujamos un área de texto y tipeamos los dígitos para guiarnos, les recomiendo tipear los dígitos mas anchos así evitaremos lineas dobles.
(si no disponen de la ventana propiedades pueden activarla en el menú "ventana/propiedades/propiedades")
en el cuadro de propiedades cuando terminen de ajustar la fuente color y tamaño, asegurensen de seleccionar tipo de texto dinámico (esta en la esquina superior izquierda de las propiedades) y luego donde dice variable hay que elegir un nombre identificativo, yo elegí RELOJ, pueden elegir HORA o lo que prefieran, pulsen sobre el botón incorporar y eligen "numerales" y agregan el símbolo de "dos puntos" o si prefieren elijan "todos", esta opción lo que hace es agregar fuentes al swf.
por ultimo insertamos un fotograma de manera que en total queden dos fotogramas
seleccionamos nuestra capa de reloj, menú Insertar / Linea de tiempo / Fotograma (o F5)
nota: con fscommand2 ("GetLocaleLongDate","DATE"); se obtiene la fecha, en mi caso funciona bien pero con el pequeño problemita de que me presenta dos caracteres extraños

ahora vamos al código
el código al igual que el reloj quedara en una capa separada pese a que no sea visible
entonces ya saben, crean una capa (sera "capa 4") y la renombran, yo la llame "Código"
(si no disponen de la ventana acciones, activenla desde menu "ventana / acciones")
entonces sobre nuestra capa de programación (al que llame "Código") abrimos el cuadro de acciones y tipeamos lo siguiente
fscommand2 ("GetLocaleTime","Reloj");

lo que hace fscommand2 ("GetLocaleTime","Reloj") es tomar la hora del dispositivo (telefono, pc, ...) mediante GetLocaleTime y la introduce en la variable Reloj, y como nuestra variable es visible podremos disfrutarla en pantalla.
para probarla seleccionen menú control / probar película
el fondo parpadeando puede ser molesto así que lo solucionan agregando un fotograma al fondo para eso seleccionen la capa de fondo y pulsen F5 así quedaran dos fotogramas de fondo y dos de reloj
-Día de la Semana
seguiremos los mismos pasos que para crear un reloj
creamos y renombramos la capa (noten que ya incluye dos fotogramas, si no es asi la agregamos)
luego con la herramienta texto escriben el día con mas caracteres o mas ancho (según la fuente) así evitamos lineas dobles como sorpresas durante el transcurso de la semana
elegimos un nombre para la variable, yo elegí "Día"
agregamos todas las fuentes
y listo

vamos al código, click sobre la capa de código, desplegamos acciones.
quien nos va a dar el día de la semana es "GetDateWeekday", pero en números, por lo tanto a cada uno de esos números tenemos que asignarles el dia correspondiente (0 = Domingo, 1 = Lunes, etc...) o pueden ser mas creativos
esto pueden lograrlo fácilmente con IF pero yo lo voy a hacer con switch (es la versión de SELECT CASE del lenguaje Basic)
aquí les paso el código completo, deben agregarlo debajo del código de reloj
switch (fscommand2("GetDateWeekday")) {
case 0:
DIA = "Domingo";
break;
case 1:
DIA = "Lunes";
break;
case 2:
DIA="Martes";
break;
case 3:
DIA="Miércoles";
break;
case 4:
DIA = "Jueves";
break;
case 5:
DIA = "Viernes";
break;
case 6:
DIA = "Sábado";
break;
default:
DIA="ERROR!";
}
lo que hace switch es muy simple
dependiendo del valor que devuelve fscommand2("GetDateWeekday") selecciona un "CASE"
por ejemplo, si es Lunes fscommand2("GetDateWeekday") va a devolver 1 (uno) y directamente seleccionara y ejecutara todo lo que se encuentre entre CASE 1 y BREAK
en este caso DIA = "Lunes"
lo que introducirá el texto "Lunes" en nuestra variable Dia y como nuestra variable Dia es visible en pantalla nos la va a mostrar
este mismo método sirve para los meses con fscommand2("GetDateMonth")
-Batería
seguimos los mismos pasos para crear un nuevo objeto
nueva capa, la renombramos
herramienta texto
creamos un texto
yo use los valores 100 como texto ya que es mi nivel maximo de bateria
le damos nombre a la variable, esto es muy importante, yo use el nombre Bateria
agregamos fuentes
y vamos al código (acciones)

vamos a utilizar GetBatteryLevel para obtener el nivel de batería, pero lo vamos a combinar mediante un IF con GetPowerSource para saber si se esta cargando o no, de esta forma aprovechamos y vemos como funciona IF (y tambien ELSE)
el codigo seria este:
if (fscommand2("GetPowerSource"))
{
Bateria ="--";
}
else
{
Bateria =fscommand2("GetBatteryLevel");
}
lo que hace fscommand2("GetPowerSource") es devolver verdadero si se esta cargando y falso si usa batería
entonces lo que hace if es si se cumple (fscommand2("GetPowerSource")) ejecuta lo que esta entre las llaves, de lo contrario sigue con el codigo y no ejecuta nada
pero tenemos un ELSE, y sirve para ejecutar codigo en caso de que if (fscommand2("GetPowerSource")) sea falso
y si IF es falso ejecuta Bateria =fscommand2("GetBatteryLevel") lo que arroja el nivel de batería
Noten que Bateria ="--" hace que aparezca en pantalla "--" y estos no son números, por lo tanto agreguen a la fuente tan como figura en la imagen.
-Nivel de Señal
el nivel de señal se logra con GetSignalLevel
por ejemplo
luego de haber seguido todos los pasos para agregar un objeto, lo llamamos "señal", el código seria
señal = fscommand2("GetSignalLevel");
y veremos en pantalla el nivel de señal
-Finalizar
para cambiar el fondo podríamos aprovechar la capa que tenemos, clickeamos sobre nuestro fondo actual y eliminarlo es tan simple como presionar la tecla SUPR
luego con CTRL + R agregamos nuestro fondo definitivo y decorativo
tengan en cuenta que si utilizan animaciones gif el tamaño del swf puede resultar demasiado grande, asi que sean generosos con la cantidad de cuadros y completen los fotogramas para que todos tengan la misma cantidad y no parpadeen
por ultimo para compilar la película, vamos a menú Archivo / Exportar / Exportar Película
en el cuadro asegurensen que sea Flash Lite 1.1 y demás...
y aquí tienen los resultados, estas son capturas de mi teléfono

-Posible errores
Parpadeos
si tenes objetos que parpadean asegúrate de que estén en capas separadas,
si tenes mas de dos fotogramas asegúrate de que todos tengan la misma cantidad de fotogramas
no aparece el código de programación
antes de abrir acciones tenes que tener seleccionada la capa donde estas programando
el fondo tapa todo
esto se soluciona muy fácil
arrastra la capa donde tenes el fondo hasta que quede ultima
error en código
asegúrate de haber configurado flash lite 1.1 y no flash 1
también tene en cuenta que no se simula niveles de señal bateria y demas, eso tenes que probarlo en el teléfono
reloj tarda en actualizarse
seguramente pusiste una animación como fondo
en la linea de tiempo tenes que copiar los fotogramas de código (solo de código) y pegarlos hasta completar el total de fotogramas que tengas
la animación transcurre demasiado rápido
pues ese efecto se da cuando esta activo como fondo
proba bajando la velocidad de fotogramas
agradecimientos
mi hermana mayor por conseguirme el flash 8 (y prestarme el chip para publicar en el foro)
mi hermana menor por conseguirme el paquete de fuentes
para lo que no tienen flash 8 les dejo la ayuda de flash para que tengan una idea de todo lo que se puede hacer, todos estos comandos se utilizan dentro de fscommand2()
Escape Codifica una cadena arbitraria en un formato seguro para la transferencia en red.
FullScreen Establece el tamaño del área de visualización que se utilizará en la representación.
GetBatteryLevel Devuelve el nivel de batería actual.
GetDateDay Devuelve el día de la fecha actual como un valor numérico.
GetDateMonth Devuelve el mes de la fecha actual como un valor numérico.
GetDateWeekday Devuelve el número del día de la fecha actual como un valor numérico.
GetDateYear Devuelve un valor número de cuatro dígitos correspondiente al año de la fecha actual.
GetDevice Define un parámetro que identifica el dispositivo en el que se está ejecutando Flash Lite.
GetDeviceID Define un parámetro que representa el identificador exclusivo del dispositivo (por ejemplo, el número de serie).
GetFreePlayerMemory Devuelve la cantidad de memoria de pila disponible para Flash Lite, expresada en kilobytes.
GetLanguage Establece un parámetro que identifica el idioma que se utiliza en el dispositivo.
GetLocaleLongDate Define un parámetro para una cadena que representa la fecha actual, en formato largo, según la configuración regional seleccionada.
GetLocaleShortDate Define un parámetro para una cadena que representa la fecha actual, en formato corto, según la configuración regional seleccionada.
GetLocaleTime Define un parámetro para una cadena que representa la hora actual, según la configuración regional seleccionada.
GetMaxBatteryLevel Devuelve el nivel máximo de batería del dispositivo.
GetMaxSignalLevel Devuelve el nivel máximo de intensidad de la señal.
GetMaxVolumeLevel Devuelve el nivel máximo de volumen del dispositivo como un valor numérico.
GetNetworkConnectStatus Devuelve un valor que indica el estado actual de la conexión de red.
GetNetworkName Establece un parámetro para el nombre de la red actual.
GetNetworkRequestStatus Devuelve un valor que indica el estado de la solicitud HTTP más reciente.
GetNetworkStatus Devuelve un valor que indica el estado de la red telefónica (es decir, si hay una red registrada y si el teléfono está lejos de la red doméstica).
GetPlatform Define un parámetro que identifica la plataforma actual, que describe ampliamente la clase de dispositivo. Para los dispositivos con sistemas operativos abiertos, este identificador es normalmente el nombre y la versión del sistema operativo.
GetPowerSource Devuelve un valor que indica si la fuente de alimentación es una batería o externa.
GetSignalLevel Devuelve la intensidad de la señal actual como un valor numérico.
GetTimeHours Devuelve el valor de hora de la hora actual del día, basada en un reloj de 24 horas como un valor numérico.
GetTimeMinutes Devuelve el minuto de la hora actual del día como un valor numérico.
GetTimeSeconds Devuelve el segundo de la hora actual del día como un valor numérico.
GetTimeZoneOffset Define un parámetro como el número de minutos de diferencia entre la zona horaria local y la hora universal (UTC).
GetTotalPlayerMemory Devuelve la cantidad de memoria de pila total asignada a Flash Lite, expresada en kilobytes.
GetVolumeLevel Devuelve el nivel actual del volumen del dispositivo como un valor numérico.
Quit Hace que el reproductor de Flash Lite detenga la reproducción y se cierre.
ResetSoftKeys Restablece la configuración original de las teclas programables.
SetInputTextType Especifica el modo en que debe abrirse el campo de introducción de texto.
SetQuality Define la calidad de la representación de la animación.
SetSoftKeys Cambia la asignación de las teclas programables izquierda y derecha del dispositivo, siempre que se pueda acceder a ellas y sea posible.
StartVibrate Inicia la vibración del teléfono.
StopVibrate Detiene la vibración del teléfono, si está activa.
Unescape Descodifica a su formato normal una cadena arbitraria que se codificó para protegerla durante transferencias en red.







