Ayuda - Búsqueda - Miembros - Calendario
Versión Completa: Createtextfield No Acepta El Tipo De Letra (solucionado)
Swishmax.es. Foro de consulta en español > SwishMax > SwishMax 1
moritz
Hola:

Me ha surgido un problema al probar un programita que hice sobre numeración.
El campo donde hay que introducir los datos no utiliza el tipo de letra que había definido, sino que usa un tipo de fuente básico de windows.
Sólo funciona bien el programa, si la fuente está instalada en ese ordenador. Pero según tengo entendido, al hacer el archivo swf o el exe, swishmax lo incorpora.
Además eso es así porque otros aspectos del programa (títulos, botones...) donde utilizo el mismo tipo de letra, si la muestra perfectamente.

¿Le falta alguna orden o algún añadido al siguiente script para que funcione bien con ese tipo de letra que le he especificado sin que tenga que estar instalada?

createTextField("respA", this.getNextHighestDepth(), 350,365,136,80);
respA.html = true;
respA.htmlText ='<font size="30"><font face="gorosoft"><b>';
respA.textcolor = "0x000000";
respA.border = true;
respA.restrict = "0-9, .";
respA.autoSize = "left";
respA.wordWrap = true;
respA.borderColor = 0x58acfa;
respA.background = true;
respA.maxChars = 6;
respA.backgroundcolor = 0x58acfa;
respA.type = "input";
Selection.setFocus("respA");
stop();
}


Un saludo
Moritz.
moritz
rolleyes.gif

Hola a tod@s:

Mientras espero a ver si alguien del foro tiene la solución, he encontrado una aceptable. Consiste en crear un instalador (en este caso he utilizado - Smart Install Maker - donde además del ejecutable, va también el tipo de letra que quiero usar, y que es instalada en la carpeta fuentes de Windows. De esta manera todo funciona correctamente.


Un saludo
Moritz.
cancrexo
Hola.
Para solucionar eso tienes que hacer 3 cosas.
  1. Crear una instancia formato de texto (clase TextFormat )y aplicarselo al texto. En esa instancia definirás el nombre de la fuente y su tamaño.
  2. Setear la propiedad embedFonts de textField a true
  3. Incluir en el swf (fuera de la escena o en otra escena) una campo de texto creado con Swishmax (no mediante TextField) con la fuente a utilizar. Esto es necesario porque en SMax no tienes la opción de incrustar la fuente de tipo dispositivo (o por lo menos yo no la he visto biggrin.gif ) Supongo que con SM2/3 podrías meterla en la biblioteca por ejemplo...


Resumiendo:
- TextFormat
- embedFonts a true
- incluir copia de texto dinámico swish con la fuente en cuestión

Salu2
moritz
Hola cancrexo.


Lo de crear el campo de texto dinámico si lo he entendido. Pero creo que para las otras dos cosas me falta algo.



¿Al createtextfield que puse más arriba le debo añadir esto?


var respA = new TextFormat();
respA.embedFonts = true;


Y esto que me comentas

En esa instancia definirás el nombre de la fuente y su tamaño.

¿dónde lo pongo?



Un saludo
Moritz
cancrexo
Tienes que crear una instancia de TextFormat:
CÓDIGO
miFormato = new TextFormat();
miFormato.font = "Arial";
miFormato.size = 12;
miFormato.color = 0x000000;


Y una vez creado el textField:
CÓDIGO
this.createTextField("respA", this.getNextHighestDepth(), 350,365,136,80);
respA.html = true;
respA.embedFonts = true;

respA.setTextFormat(miFormato);


Recuerda que al usar TextFormat, los posibles colores, etc que definas para textField se sobreescriben.

Claro que todo esto va de memoria y si no me equivoco mucho wink.gif

Salu2
moritz

wacko.gif

Hola:

Me parecer que lo voy a hacer con la forma del instalador que comenté más arriba.
Pues de la manera que me dice cancrexo no puedo.
Mis conocimientos en actionscript no llegan para poder dar forma a lo que busco, y lo que me señala cancrexo no sé como adaptarlo. Parece que me olvido de algo para que funcione correctamente.

Un saludo
Moritz.
cancrexo
Y porque no subes el swi con el que estás trabajando para que entre todos podamos ver que es lo que estás haciendo mal?

Salu2
dios_ohm








Edito: Me había olvidado de adjuntar el .swi, de paso adjunto también el código en un .txt, y yo que no quería escribir... biggrin.gif
moritz


Hola dios_ohm,

Aunque con algunas pequeñas variaciones, eso es básicamente lo que tengo, y te acurre lo que a mí.
Cuando la fuente que utilizas está instalada en el ordenador, todo funciona perfectamente, pero si no, el ordenador pone una fuente por defecto. El archivo swf, o el exe que creas no lleva incorporada la fuente (no sé si para eso tendrás algo que ver el (EmbedFont).
Prueba a desinstalar la "Tahoma" que tu pusiste -quedándote con una copia-, o haz la prueba con otra fuente más rara y verás lo que te comento.


Un saludo
Moritz.
dios_ohm
Hola Moritz, tengo en claro lo que me comentas, subí el ejemplo en función de tus dudas:

CITA(moritz @ 1-07-2010 - 07:28 AM) *
Y esto que me comentas

En esa instancia definirás el nombre de la fuente y su tamaño.

¿dónde lo pongo?


CITA(moritz @ 4-07-2010 - 07:56 AM) *
Me parecer que lo voy a hacer con la forma del instalador que comenté más arriba.
Pues de la manera que me dice cancrexo no puedo.
Mis conocimientos en actionscript no llegan para poder dar forma a lo que busco, y lo que me señala cancrexo no sé como adaptarlo. Parece que me olvido de algo para que funcione correctamente.


Pensé que no habías entendido al Maestro Cancrexo respecto a lo del TextFormat, más allá de lo que he comentado acerca de la propiedad embedFonts, tampoco me ha quedado claro lo de incluir copia de texto dinámico swish con la fuente en cuestión, entiendo, y he realizado pruebas, que si se crea un campo de texto propio de Swishmax aplicándole el tipo vector en el formato y desde opciones de caracteres se selecciona Todos los caracteres, ese campo tendrá incluída la fuente en cuestión, de lo que no me entero es respecto a como relacionar el campo propio de Swishmax con el TextField para que lo interprete y tome las fuentes desde ahí sin recurrir a las de dispositivo, osea las fuentes del PC, seguramente es ahí donde toma partida el embedFonts, pero sigo sin enterarme, te animo nuevamente a que subas tu .swi tal como ya también te lo ha sugerido el Maestro.

Saludos!
.
moritz
Hola:


Adjunto archivo swi y tipo de letra Gorosoft.
He puesto el ejemplo para números de dos cifra.
Si no instalas lel tipo de letra Gorosoft, el cuadro de texto de CreateTextField no la reconoce, aunque el swi ya la lleva pues la frase "Escribe el número" si se ve con ese tipo de letra.
Una vez que se hayas escrito la respuesta en el recuadro correspondiente, hay que teclear en la tecla "Intro".

Un saludo
Moritz.
cancrexo
Hola.
dios_ohm
En el swi te falta incluir un texto dinámico con la fuente en cuestión. Es decir, debes además incluir un campo de texto dinámico tipo device con la fuente en cuestión. Si lo haces así al exportar, el swf ya incrusta la fuente y se ve independiente de si el usuario la tiene. Puedes poner el texto fuera del stage o bien en otra escena. Lo importante es que el swi la tenga antes de generar el swf.

Obviamente, si un usuario sin dicha fuente abre el swi y exporta el swf, la fuente no se incrustará.

Espero se me entienda ahora.

Salu2
dios_ohm
Hola Cancrexo, he probado lo que me comentas pero no he tenido éxito, igual ya sabes que si hay algo que me sobra es tenacidad, si bien éste no es mi proyecto me ha picado la curiosidad debido a que estoy utilizando el método en un desarrollo que en realidad no emplea ésto de necesitar tener incorporada la fuente pero como para mi el saber no ocupa espacio, aquí me tienes; de todos modos he probado de otra forma y obtuve resultados favorables, en verdad no sé porque razón Moritz utiliza el método createTextField cuando lo podría hacer directamente con un campo de texto propio de Swishmax, de hecho aquí adjunto un ejemplo en base al suyo donde se vé a las claras lo que digo.

Hola Moritz, si te llega a resultar de utilidad lo que he hecho en tu archivo ten en cuenta que en las escenas 71; 72 y 73 anulé parte del código, ya verás mis anotaciones al respecto cuando abrás el archivo .swi, te pego aquí, por si las moscas, dos imágenes tratando de apoyar la descripción de lo realizado, cualquier cosa comenta y vemos, así y todo sigo en la carrera de hacerlo funcionar con el método anterior.

Campo de texto RespA (agregado en las escenas 71; 72 y 73)




Texto tipo vector y selección de Todos los caracteres incluídos




Enlace al .swf en línea: clíck aquí

Saludos a ambos!
.
cancrexo
El truco está en hacerlo con textos tipo Device. Para tipo vector swishmax ya incrusta la fuente rolleyes.gif
Asegúrate de que pones correctamente el nombre de la fuente y de que exportas mínimo a SWF8

Salu2
dios_ohm
Hola Cancrexo, Maestro de los Maestros, no me queda más que repetir las palabras de Emilio1908 allá sobre los fines de febrero, vá con el mayor de los respetos de mi parte, claro, clíck aquí biggrin.gif

Si bien no pasa de la escritura de la segunda respuesta seguramente debe estar relacionado con alguna parte del código de Moritz, ya nos comentará... smilies (4).gif

Enlace al .swf en línea: clíck aquí

¡Un Gran saludo, Maestro! smilies (3).gif
.
moritz
Hola cancrexo y dios ohm:

dios_ohm, lo he hecho con createTextField para que al empezar a escribir ya esté el cursor parpadeando en el lugar correspondiente, y así no tener que picar con el ratón cada vez que se quiere escribir el nombre del número. Sólo se tiene que hacer esto si se pide la pista ya que se cambia de lugar al oprimir en "pista". Pero, si por lo general, no se pide pista, sólo tienes que ir escribiendo y darla e "Intro".
De todas formas gracias por las molestias que te has tomado.

cancrexo, como verás tengo muy poca idea con esto del swishmax y los action script, ¿podrías concretarme un poco más lo que dices de los devices para que la fuente se incruste?

Un saludo y gracias.
Moritz



cancrexo
moritz, para eso del cursor, busca en el foro la propiedades focus, _focusrect y tabIndex.

Salu2
moritz


smilies (4).gif

Hola cancrexo

No gracias, no me aclaro con lo de CreateTextField y me voy a meter con focus, focusrect y demás familia...


Un saludo
Moritz.
cancrexo
En lo relativo a tu pregunta sobre los devices. Las fuentes de tipo device (dispositivo) son aquellas que el Flash Player representa utilizando la fuente del ordenador del usuario. Si seleccionas para un campo de texto tipo device la fuente Arial, verás como esta se presenta mucho más nítida y enfocada que si lo haces con fuentes tipo vector o pixel.
El problema está en que si utilizas una fuente que el usuario no tiene instalada en su equipo, Flash Player utilizará la que tenga asignada por defecto, generalmente Arial o Times NR.
Si vas a usar una fuente rara y quieres evitar que esto último suceda, lo que tienes que hacer es lo que te indicaba en mis mensajes anteriores:
- Crear textField
- Crear TextFormat
- Crear un campo de texto de swishmax (no con createTextfield) en la película de forma que este se incruste en el swf que se genera.
- Exportar a swf >8

Como verás, dios_ohm lo ha logrado.

Salu2
moritz
Hola dios_ohm:


Podrías poner el .swi de la prueba con device que has puesto en línea, para ver si de una vez logro arreglar el problema.

Un saludo
Moritz.
dios_ohm
Hola Moritz, aquí te lo adjunto, al final el error por el cual no funcionaba bien lo había cometido yo al copiar y pegar código, creo que quedo bien, de ser así cuanto menos quiero el .swf final para mis sobrinos.

Recuerda cargar la fuente Gorosoft.ttf antes de abrirlo y de mantenerla en la PC hasta la exportación en SWF8, el resto ya lo verás en el código, es muy poco lo que cambia y se agrega una escena (Fuente_Gorosoft).









Enlace en línea: clíck aquí


Muy buen trabajo, vayan mis Felicitaciones! smilies (3).gif

Un gran saludo de Buenos Aires - Argentina!
.
moritz
rolleyes.gif


Gracias dios_ohm.
Claro que sí, en cuanto lo termine subo el "juego educativo". También la versión inversa, donde te aparece el nombre de un número y tienes que escribir sus dígitos.
Es para esta segunda forma donde más necesitaba lo del tipo de letra. Si miras la fuente "gorosoft" verás que la coma la modifiqué por un uno pequeñito. Es para poner la notación de los millones, los millanes se marcan con el punto.

Muchas gracias de nuevo, y también a cancrexo y a Emilio por la ayuda y colaboración prestada.

Un saludo
Moritz.
moritz


Hola:

Adjunto los dos archivos comprimidos. Van en formato .exe y tienen la tecla Esc y el botón derecho inhabilitado para que los niños no trastoquen la pantalla de juego.
Cuando se tenga que escribir los números con cifras, si van millones se marca con la coma que sale un uno pequeñito. y si se quiere marcar los millares se hace con el punto.
Están en versión beta. Si alguien tiene alguna sugerencia o ve algún error, agradezco me lo comuniquen. Si alguien también quiere el archivo .swi me lo pide al correo que aparece en el programa, en el apartado autor.


Un saludo
Moritz
dios_ohm
Hola Moritz, desde ya te agradezco por los archivos, insisto, estupendo tu trabajo, si me permites una pequeña observación es en cuanto al tema de los campos de texto que poseen selección de modo innecesario, o al menos eso creo, de no ser necesario que el texto sea seleccionable pienso que hay dos problemas con dos probables soluciones, a saber:

Para los createTextField, p.e. Escena71> RespA:

CÓDIGO
RespA.selectable = false;

Referencia Adobe: clíck aquí

Para los propios de Swishmax, p.e. Escena 71> dato3 bastaría con quitar la propiedad desde la opción "Text is selectable" en el panel de propiedades de texto:



Esto que te comento correría para con el de números escritos en letras, para el otro sería lo mismo pero a la inversa en función del diseño.

Espero que mi crítica te resulte constructiva, cualquier cosa nos comentas.

Saludos!


PD: Desde el otro lado del Atlántico se vé brillar en el firmamento la bandera rojigualda !

::::.... Braven por el 1 a 0! biggrin.gif
.

moritz
Hola dios_ohm.
Gracias por los comentarios.
Con respecto a la propiedad de seleccionar los campos de texto, no me había dado cuenta. Tomo nota para corregirlos.
Y si, "la roja" ha vengado un poco la derrota de Argentina frente a Alemania. A ver que pasa el domingo en la final.

Un saludo
MORITZ
dios_ohm
Hola Moritz, te cuento brevemente lo sucedido al momento que un niño de 10 años de edad, que estudia en una escuela bilingüe, es muy buen alumno y demás características; bien tuvo frente a sus ojos en pantalla uno de tus archivos (NUMEROS A LETRA BETA_1.exe):

Picó en PISTA, porque no tenía ni la menor idea de como escribir en letras el número de 8 cifras que le tocó en suerte, no vaciló un segundo que con el ratón estaba seleccionando el campo de texto tt2, botón derecho copiar y lo pegó en el campo de respuesta, le dió ENTER y siguió así hasta que se aburrió de copiar y pegar.

I¡¡ I N C R E I B L E el peque, una LUZ !!! ohmy.gif

En función de lo sucedido vuelvo a hacerte hincapié en lo de los campos de texto seleccionables, más allá de lo estético, aquí vés... son de terror algunos niños.

Enterado de ésto y al momento de decidir escribirte pensé: "Pico en AUTOR, copio y pego la dirección de correo y le envío un email para contarle, total, si el niño lo hizo porque no yo", y no, ese texto no es seleccionable y aquí me tienes comentándotelo a través del foro. biggrin.gif

Moraleja: El único texto que desde mi óptica debería ser seleccionable sería el de tu dirección de correo. wink.gif

Saludos!

Edito: Me olvidé de la mejor parte; bien el niño abandona el PC, haciéndome el tonto le pregunto: ¿Y... qué tal el juego que te traje? ¿Te gustó? , me respondió: "Si, está genial el jueguito pero tiene un error... (Ahí temblé!), en la pantalla, arriba dice: "EscribRe con letra" y debería decir: "Escribe con letraS", porque son muchas." unsure.gif
.
moritz

Hola dios_ohm:


No me extraña, un sobrino de "Dios" tiene que ser muy listo. wink.gif

Me pongo a blindar lo de seleccionar texto.
Lo de "escribe con letra" o "escribe con número" es una forma utilizada aquí en España para diferenciar la forma en que se quiere que se exprese una cantidad determinada.

También le pondré la "ese" para evitar "dudas lingüísticas".

Gracias por el beta-tester, lo voy a tener que poner en los créditos...


¿Crees que sería conveniente añadir una página-recompensa donde se van coleccionando imágenes de disney, pokemon... cada vez que en un determinado apartado se consiguen más de 15 ó 20 aciertos (descontados los fallos y las pistas)?



Un saludo
Moritz.






dios_ohm
Hola Moritz, se me había pasado tu último comentario, seguramente desde el punto de vista extrictamente comercial no estaría mal premiar a los niños a modo de recompensa en función de los resultados obtenidos, creo que los mas pequeños con un Pikachu o un perro Pluto se verían estimulados, el tema sería con los más grandecitos y las imágenes que poner para incentivarlos, tal vez con un usuario y una clave... smilies (4).gif

Saludos y... a GA N AR mañana en Sudáfrica !!!
Esta es una versión "reducida (lo-fi)" de nuestro contenido. Para ver la versión completa con mas información, formato e imágenes, por favor haz click aquí.
Invision Power Board © 2001-2012 Invision Power Services, Inc.