|
Tabla de Contenidos
Font Manager está pensado para organizar el acceso a las fuentes en la librería compartida y dar absolutamente nuevas posibilidades.
Font Manager permite el no embeber las librerías de fuentes en la película, y por el contrario cargarlas en escena con el comandoloadMovie y así poder usarlas tanto en la película principal y en cualquier otro movieclip cargado.
Las librerías externas se presentan en parejas de ficheros swf: fichero librería y fichero contenedor. El nombre del fichero librería depende del nombre del fichero contenedor y está formado como sigue: [nombre_fichero_contenedor]+[_lib]+[.swf]. Por ejemplo, si el nombre de fichero contenedor es , entonces el nombre de fichero librería debería ser
El fichero librería debería contener un movieclip con las siguientes propiedades de Linkage: El parámetro "export for runtime sharing " debe estar checkeado y el camino "URL" debe ser dado también. El movieclip debería contener un campo de texto nombrado con embed fonts.
Busca en la sección Creando las librerías compartídas y en los ficheros de ejemplo para aprender más.
Más abajo estas librerías externas pueden ser cargadas y pueden ser registradas para su uso en movieclips usando los métodos de Font Manager.
El uso de las bibliotecas organizadas de esta manera no es la única posibilidad. Font Manager es solo un conector entre la libreria compartida y otros movieclips del proyecto, incluyendo los movieclips cargados.
El acceso a la fuente puede ser implementado de las siguientes formas:
- La película principal puede cargar el archivo swf externo y usar su librería de fuentes compartida;
- El movieclip cargado puede usar la librería de fuentes compartida de otro movieclip externo cargado;
- La película principal puede contener su propia librería de fuentes compartida y puede usar estas fuentes en cualquier movieclip cargado externamente.
Por defecto un solo objeto es creado durante la inicialización: fonts_mng. Este es el objeto global y está oculto mediante el uso de ASSetPropFlags.
Si necesitas ver el contenido de el objeto fonts_mng basta con crear una referencia al objeto:
_root.show_me = font_mng
y ver las variables listadas usando el modo de Test de la película.
Usar Font Manager da las siguientes nuevas posibilidades:
- usar los mismos archivos de la biblioteca a traves de todo el site permite reducir al mínimo el tamaño de los datos cargados por el usuario.
Una vez cargados los archivos de la biblioteca no serán cargados otra vez en la máquina del usuario y se buscarán en la caché del browser.
- fuentes que cargan cuando son necesarias.
Durante el parseo del HTML es posible definir qué fuentes son requeridas y entonces cargarlas y utilizarlas.
- localización mas fácil (soporte internacional).
Se necesita mucho tiempo para cambiar las propiedades de los campos de texto y para embeber las nuevas fuentes durante la localización. Usando Font Manager se puede instalar la biblioteca inmediatamente y así todos los movieclips que en el escenario utilizarán las fuentes apropiadas.
Distribuya los ficheros de datos y los archivos de la biblioteca con las fuentes localizadas en los directorios correspondientes primero y después podrá localizar la película "al vuelo", solo con señalar el directorio de la localización necesario.
- simplificación del reajuste.
Basta con sustituir la fuente embebida en la librería de fuentes compartida para aplicar estos cambios a todas las películas donde se utiliza esta biblioteca.
- separacion de motor(kernel), datos y librerías.
Ahora es posible hacer una separación total. Puede crear un componente, que creará la escena usando el xml, cargando solamente los elementos necesarios.
It is possible to create a font library using
Font Library Creator Extension from
Carlos Rovira.
Nota: Font Manager ha sido creado principalmente para su uso con el flash Player 6 por tanto todos los ejemplo y tutoriales es preferible que se publiquen en un swf para la versión 6.
Sin embargo es posible usar Font Manager con el Flash Player 7.
Acerca de usar Font Manager con movieclips para la versión 7.
Paso 1: Creando el movieclip librería e incluyendo la fuente
- Crea un nuevo fichero FLA y nombralo dependiendo del nombre y atributos de la fuente que será guardada en este fichero. El nombre del fichero debe consistir de las siguientes partes:
por ejemplo: ,
donde significa que la fuente es usada para propósitos generales, y la significa que el estilo de la fuente contenida en la librería es itálica.
Si desea crear la biblioteca con la misma fuente pero con estilo de fuente plano, entonces nombrelo body_p_lib.fla, si cualquier otro desarrollador de su compañia crea body_b_lib.fla o body_bi_lib.fla , puedes esperar ciertamente que estas bibliotecas utilicen la misma fuente con estilos en negrilla y negrilla-itálico respectivamente.
No use nombres de fuentes para los nobres de fichero de las librerías. Si la fuente es reemplazada posteriormente, pueden aparecer muchos inconvenientes. Si la librería arial_lib.swf contiene la fuente Times New Roman, después los desarrolladores se verán sorprendidos por el resultado en la localización de las fuentes para Etiopía o Rusia.
Más abajo mantenga estas estrategias de nombrado de bibliotecas y esto permitirá que controle la biblioteca sin ningún apuro y, por otra parte, este proceso sera comprensible no solamente para usted.
- Cree un movieclip y nómbrelo con nombre comprensivo, se recomienda utilizar el nombre de la biblioteca, por ejemplo: . Pulse el botón derecho del ratón sobre este movieclip, seleccione el Linkage... y compruebe que la propiedad Export for runtime sharing está chequeada, el estado de cualquier otra propiedad de Linkage no es importante.
Fije el camino en el URL al archivo swf. El nombre del archivo swf debe coincidir con el nombre de fichero después de publicar, por ejemplo: (lea debajo sobre como fijar el camino absoluto).
- Cree el campo del texto dentro de este movieclip;
- Inserte el texto en el campo de texto. Es mejor incluir el nombre de la librería, estilo de la fuente y versión de la lengua en este texto, por ejemplo: ;
- Asigne la fuente respectiva para el campo del texto;
- Es necesario incluir la fuente en el clip: Propiedades, Caracteres, ..., Todos los caractestes (o cualquier otro conjunto necesario de caracteres);

- Nombra la instancia del campo de texto (necesario), por ejemplo: ;
Es posible pero no se recomienda poner otros campos de texto en este movieclip aunque en este momento esté seguro que estas dos fuentes serán utilizadas siempre juntas. Se recomienda poner solamente un movieclip con solamente un campo de texto dentro, que contenga solamente una fuente embebida en un archivo de biblioteca. Si no, correrá el riesgo innecesario de cargar datos adicionales y de usar las bibliotecas con problemas;
- Dentro del movieclip cree la nueva capa sobre la capa que contiene el campo del texto y ponga el script siguiente:
if (font_mng.registerTextFormat("body_i", this.body_i_txt)) {
this._parent.removeMovieClip();
}
- Salve el archivo FLA con el mismo nombre y compílelo.
Paso 2: Creando el movieclip contenedor
- Cree un nuevo archivo FLA;
- Salvelo en la misma carpeta con el mismo nombre pero no incluya el sufijo _lib, por ejemplo:
- Para Flash MX: Cierre y entonces utilize "Abrir como librería" con el fichero FLA con el campo de texto;
- Arrastre el movieclip que contiene el campo de texto desde la librería compartida sobre el escenario de la nueva película;
- Publique el fichero.
Los ficheros de la librería están ahora listos para su uso.
Paso 3: Cargando y probando
- Cree el nuevo archivo FLA y sálvelo en la misma carpeta, por ejemplo, con el nombre ;
- Ponga el script de inicialización de Font Manager en cualquier fotograma, es recomendable ponerlo en el comienzo de la película;
Ahora puede cargar la fuente y aplicarla a cualquier campo de texto.
Para propositos de prueba puede usar mi script, pongalo en el primer fotograma _root después del código de inicialización de Font Manager:
_root.createEmptyMovieClip("temp_mc", 0).loadMovie("body_i.swf");
_root.createTextField("test_txt", 1, 0, 0, 200, 200);
_root.test_txt.text = new Array(30).join("Hello world! ");
font_mng.addListener(_root.test_txt);
_root.test_txt.onRegister = function(success, name, mng) {
if (!success) {
return trace("registerError : "+name);
}
trace("name:\n\t"+name+"\nfont:\n\t"+mng[name].font);
this.setTextFormat(mng[name]);
this.wordWrap = this.embedFonts=true;
};
- Ahora pruebelo. En el campo de texto aparecerá texto.
Paso 4: Testeando y usando en un site
Planeé la localización de sus bibliotecas en el sitio de manera exacta. Para su uso en el site la manera óptima es utilizar los caminos absolutos o caminos relativos de la raíz del sitio.
Nota: si usted quiere probar la versión demo de Font Manager, puede hacerlo solamente usando un simulador de WebSpeed. Abra el cuadro de diálogo de configuración y fije el parámetro local del sitio web como camino a la carpeta donde se almacena la escructura de los archivos de prueba de su proyecto. Entonces presione el botón "Browse Web" e introduzca http://localhost/ en la barra de dirección del browser.
Asi pues, en primer lugar cree las carpetas donde los archivos de la biblioteca serán almacenados. En el ejemplo el camino a los archivos de la biblioteca se fija como . Si está pensando utilizar la otra localización, tenga esto en cuenta.
- En la carpeta raíz del sitio cree una carpeta "Libs", con una carpeta "SharedFonts" dentro
- Abra el fichero "body_i.fla".
- Abra la librería y ponga el parámetro URL en la caja de diálogo de la propiedad de Linkage como:
- Compile el fichero; Usted recibirá un mensaje de error:
Error opening URL "file:///Libs/SharedFonts/body_i_lib.swf"
ignore este mensaje;
- Copie los ficheros body_i_lib.swf y body_i.swf a la carpeta SharedFonts (no debe realizar ningún cambio adicional en el archivo body_i_lib, este debe estar igual que lo creamos anteriormente);
- Abra el fichero TestBodyItalic.fla creado anteriormente y cambie
.loadMovie("body_i.swf")
por
.loadMovie("/Libs/SharedFonts/body_i.swf")
- Publique el fichero (Ctrl+F12) para conseguir el archivo HTML.
- Copie el fichero a cualquier lugar dentro del site.
- Abra la página. En poco tiempo, después de cargar las fuentes verá que los contenidos del campo de texto tienen ahora un nuevo formato.
Paso 5: Uso en Flash Player 7
Para usar Font Manager con el Flash Plyer 7:
- Cree un fichero swf con la versión 6, conteniendo el código de inicialización del script de Font Manager;
- coloque este fichero en el site y cárgelo si es necesario;
o
- coloque el script de inicialización de Font Manager dentro del movieclip compartido e inserte este movieclip entre los clips.
Solo hay un inconveniente en el uso con el Flash player 7: la necesidad de esperar mientras el archivo es cargado, aunque debido a su tamaño (cerca de 1 kilobyte) esta inconveniencia es mínima. Por otra parte, tal práctica se recomienda también con el Flash Player 6.
Ninguna otra diferencia funcional.
Yo he realizado un montón de experimentos mientras desarrollaba Font Manager. La primera versión de Font Manager fue un componente. Durante estos experimentos el número de métodos de Font Manager decreció de ocho a uno, el número de eventos decreció de cuatro a uno, y hubo también dos propiedades, las cuales rechazé también. Más de 50 ficheros fueron creados para el testeo. Así que, basandome en esa experiencia puedo darte algunas recomendaciones. En el futuro, encontrarás tus propios y mejores caminos, pero te aconsejo que tengas mis recomendaciones presentes:
Intente no incluir la inicialización de Font Manager en el proyecto. La mejor manera es crear un fichero swf conteniendo este script y usándolo como un módulo cargado. Incluso es mejor crear un movieclip compartido conteniendo el script de inicialización de Font Manager e insertar este movieclip compartido en los proyectos cuando sea necesario.
Esto le permitirá cambiar el script de inicialización de Font Manager si se mueve a otro dominio sin quebraderos de cabeza.
No use nombres de los ficheros de librerías swf dentro de tus películas. Tu sistema será mucho más flexible si creas un fichero xml con la descripción de tus librerías. Por ejemplo:
<fontlibrary version="1.0" author="Ivan Dembicki" >
<style name="body" font="Artemius TT" lang="rus" >
<plain id="body_p" url="/fontLibrary/rus/body_p.swf" />
<bold id="body_b" url="/fontLibrary/rus/body_b.swf" />
<italic id="body_i" url="/fontLibrary/rus/body_i.swf" />
<italicbold id="body_bi" url="/fontLibrary/rus/body_bi.swf" />
</style>
<style name="header" font="ArtemiusBlack TT" lang="rus" >
<plain id="header_p" url="/fontLibrary/rus/header_p.swf" />
<bold id="header_b" url="/fontLibrary/rus/header_b.swf" />
<italic id="header_i" url="/fontLibrary/rus/header_i.swf" />
<italicbold id="header_bi" url="/fontLibrary/rus/header_bi.swf" />
</style>
</fontlibrary>
Pon atención a la correspondencia entre los nodos ID y los nombre de los estilos. Usando los ID de esta forma es fácil conseguir la URL del fichero contenedor. Y en este caso la localización, por ejemplo., para Japón solo habría que crear una carpeta "/fontLibrary/jp/", rellenando esta carpeta con los ficheros de librerías y reemplazando los caminos en el fichero xml.
La transición desde la versión local a la de Internet se hace también más fácil.
Una ventaja más es la posibilidad de realizar un chequeo visual de la correspondecia entre fuentes y estilos.
Puedes hacer tu descripción XML como prefieras, desde luego. Esto es solo un ejemplo.
Use librerías auto registradas, como en el ejemplo. Despues de hacer el registro puede borrar las librerías sin ninguna duda.
Use caminos locales hacia las librerías para pruebas locales, y use caminos absolutos en internet.
No cree instancias propias de Font Manager, aunque esto es posible usando el siguiente código:
my_font_mng = new font_mng.constructor()
Supongo que es necesario saber de esta posibilidad, pero usela solo como último recurso.
diccionario de actionscript |
Acciones
registerTextFormat - registra el objeto TextFormat en Font Manager;
addListener, removeListener, _listeners - Font Manager es un broadcaster(notificador) y de acuerdo con esto, tiene los métodos y propiedades de un broadcaster, cuando se dispara un evento:
onRegister - el evento disparado con el registro de la librería cargada o interna.
diponibilidad
Uso
font_mng.registerTextFormat( instanceName, textField )
Parámetros
instanceName - string, asigna el nombre del objeto TextFormat
textField - apunta al campo de texto contenido en el movieclip cargado, el cual es necesario para conseguir el objeto textFormat.
Retorno
Boolean. retorna false, si el campo de texto no contiene fuentes embebidas o no hay instanceName de el objeto TextFormat. De otra manera retorna true.
Descripción
Método. Crea el objeto TextFormat dentro de Font Manager. El movieclip compartido que contiene el campo de texto de ejemplo puede ser eliminado al término.
El objeto TextFormat dentro de Font Manager puede ser creado basandose en el ejemplo de cualquier campo de texto que resida en un movieclip compartido y que tenga una fuente embebida.
Comprobar que ese campo de texto se encuentra en movieclip compartido depende del desarrollador.
Justo antes de salir del procedimiento de inicialización Font Manager propaga un evento onRegister con el parámetro de inicialización.
Ejemplo
- Caso de una librería cargada, cuando se llama desde el movieclip compartido (auto registro):
if (font_mng.registerTextFormat("body_i", this.body_i_txt)) {
this._parent.removeMovieClip();
}
font_mng.registerTextFormat("body_i", this.body_i_txt)
- Caso en que la librería esta colocada en escena:
font_mng.registerTextFormat("body_i", this.any_mc.shared_mc.body_i_txt)
disponibilidad
Uso
listenerObject.onRegister = function (success, name, instance_mng, textField ) {
}
Parámetros
success - Boolean, retorna false, cuando el nombre del objeto TextFormat no fue pasado en la llamada a registerTextFormat o no hay fuente embebida con campo de texto de ejemplo. De otra manera devuelve true.
name - string, nombre del objeto TextFormat creado dentro de Font Manager.
instance_mng - puntero a la instancia de Font Manager que fue llamada al hacer el registro;
textField - puntero al campo de texto formateado de ejemplo.
Retorno
Nada
Descripción
Evento. Disparado directamente antes de salir del proceso de registro del objeto TextFormat en Font Manager.
Desde que Font Manager es un broadcaster(notificador), este tiene todos los métodos y propiedades de un broadcaster.
Ejemplo
_root.createTextField("test_txt", 1, 0, 0, 200, 200);
_root.test_txt.text = new Array(30).join("Hello world! ");
font_mng.addListener(_root.test_txt);
_root.test_txt.onRegister = function(success, name, mng) {
if (!success) {
return trace("registerError : "+name);
}
trace("name:\n\t"+name+"\nfont:\n\t"+mng[name].font);
this.setTextFormat(mng[name], this);
this.wordWrap = this.embedFonts=true;
};
|