Foros del Web » Creando para Internet » Flash y Actionscript »

Aparición por partes, de un texto.

Estas en el tema de Aparición por partes, de un texto. en el foro de Flash y Actionscript en Foros del Web. Lo típico que se ve en videojuegos, le he dado muchas vueltas para que me quede bien pero me estoy haciendo un entrevero de aquellos. ...
  #1 (permalink)  
Antiguo 10/12/2012, 07:50
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
Aparición por partes, de un texto.

Lo típico que se ve en videojuegos, le he dado muchas vueltas para que me quede bien pero me estoy haciendo un entrevero de aquellos. So, ayuda ¿cómo lo hacen?

Especificaré un poco más porque sino me parece que no está claro.

Método 1:
1- Escribir una letra o dos o las que se quiera que aparezcan primero.
2- Copiar lo escrito, llevar al frame siguiente, escribir más, repetir...
También sirve tener el texto entero y copiarlo y cada vez que se pegue en otro frame borrar cada vez menos letras.

Comentarios:
Un bodrio. Además en un frame rate de 120 se requerirían MUCHOS frames. ¿Por qué usar un frame rate tan alto? Me parece que una de las ventajas es que algo se puede mover mejor, no como si hubiera aparecido en un lugar cercano. Si se puede mover 10 veces en 10 segundos, por decirlo así, está bien, puede aparecer en 10 casilleros diferentes mientras se mueve. Pero si cada 10 segundos sólo se puede mover 1 vez, o sea aparecer en 1 sólo lugar, entonces se moverá muy lento o será como si se hubiera teletransportado; es como cuando se pone alto Frameskip o se ve todo cortado.

Los siguientes métodos empiezan con:
1- Se escribe el texto.

Método 2:
2- Creo una capa/layer.
3- Hago en ella un prisma o cualquier objeto que tape 1 línea (renglón) de texto y que quede como si fuera el fondo; si es la idea... que en mi caso lo es.
4- Hago un motion de modo que el prisma se vaya achicando, dejando ver el texto.
5- Lo repito para CADA LÍNEA Y CADA TEXTO.

Comentarios.
Oh shit. MUCHOS FRAMES ¿más que con el método 1? No lo sé, pero también es aburridísimo (por lo largo y repetitivo).

Método 3:
2- Crear el tapa texto sin crear el layer y convertirlo a símbolo.

Ahora se me ocurren varias alternativas pero bastante borrosas y ninguna que me haga decir "me sirve".

Se puede crear un código que inserte varios de esos tapa texto, una función como le dicen, sirve cuando las líneas de texto están siempre en el mismo lado, como es mi caso, ahorra mucho trabajo. El problema es que habría que marcar:
1- Qué tan largo ha de ser cada prisma; varía según CADA línea, sino si el diálogo de un personaje es corto habría bastante tiempo en que no hay cambios, lo cual está bien pero cuando sean largos no habría ese tiempo, no tiene sentido, no es estético.
2- Cuántos prismas hay que poner, cosa que quizá no es importante pero sí para saber cuando el texto se mostró todo.
3- Qué prisma es el que debe estarse achicando.

Además quiero evitar que haya código ejecutándose al dope, es decir, cada prisma podría tener su propio código analizando si ha llegado o no su hora de achicarse, pero es mejor si están todos en stop real o sin código y que algo más los achique.

Conste que estaba haciendo un juego ULTRA SENCILLO, no puedo creer que siempre surja algo complicado...

También quería que los tapa textos desaparecieran al instante de que se hayan achicado suficiente, quizá eso agrega mucha complicación.
  #2 (permalink)  
Antiguo 11/12/2012, 03:05
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Aparición por partes, de un texto.

Jeje, no te entiendo muy bien con el diálogo que te traes contigo mismo, pero bueno, a ver si te sirve de algo.
Por ejemplo, para hacer una animación de texto sencilla como esta
Yo lo que hago es escribir el texto, luego desagrupar (separar) las letras, con el segundo botón distribuir en capas, crear una animación de movimiento en una de las letras, animarla, y después copiar el movimiento de esa y pegarlo a las demás para que se comporten igual.
Como no sé si es a eso a lo que te refieres, no te explico más, si te sirve de algo dímelo y te lo cuento un poco mejor.
  #3 (permalink)  
Antiguo 11/12/2012, 08:21
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Aparición por partes, de un texto.

No me funciona tu link y no entendí lo que dijiste ^^u

Me interesa, me gustaría ver ese link, pero me recomendaron algo así que me sirvió:
1- Poner el texto en una variable.
2- Agregar un caracter a otra variable, que se muestre en un texto dinámico.
3- Repetir el 2 hasta que estén todos los caracteres.
  #4 (permalink)  
Antiguo 11/12/2012, 10:59
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Aparición por partes, de un texto.

Vale, creo que veo que vas por otro lado, yo te estaba hablando de una animación, más bien para poner "siguiente nivel" o "has ganado", esta sería la animación:
http://nuevosvagos.es/vt.html
Tu creo que te refieres a un texto normal, como que te hable un personaje, no?
En ese caso, el método que te han propuesto me parece muy válido, si lo que quieres es un efecto de texto apareciendo por caracteres.
Para eso yo haría dos variables, una "textoMostrar" y otra "textoMostrado" y con un bucle, dices que recorra textoMostrar entera, pasando los caracteres a textoMostrado, en una función de ENTER_FRAME para que vayan saliendo paulatinamente.

Cualquiera de los métodos están bien, todo depende del efecto que quieras conseguir
  #5 (permalink)  
Antiguo 12/12/2012, 01:03
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Aparición por partes, de un texto.

Gracias. Sí, es como dijiste, pero una duda: ¿Cómo marco que debe iniciar una nueva línea?

Si quiero que aparezca así:
Joss: hola como te va, yo bien acá pero hace frío
y el perro de mi vecino no deja de ladrar

Lo pude hacer pero tuve que usar complicadas artimañas XD (he creado un tema sobre eso), te pregunto por si sabes de una forma sencilla. O sea, cuando pongo el texto en la variable ¿hay alguna manera de poner un "enter"?
  #6 (permalink)  
Antiguo 12/12/2012, 02:44
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Aparición por partes, de un texto.

No sé muy bien a qué te refieres con el "enter", a que puedas pulsar el botón para hacer avanzar el texto? a salto de línea?

He estado intentando explicar lo que tenía en la cabeza para solucionar tu problema pero al final he preferido hacer un pequeño ejemplo a ver si estamos de acuerdo en lo que quieres. Si te gusta, me lo dices y te paso los archivos para que puedas ver el código y explorarlo un poco.

El enlace sería este
  #7 (permalink)  
Antiguo 12/12/2012, 06:19
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Aparición por partes, de un texto.

El problema era que no había puesto "multilínea" en las opciones del cuadro de texto, ni "ajuste de palabras", nunca había hecho algo así.

El enter se refiere a salto de línea, sí. El problema era que si escribía:
Textoamostrar: "No, hasta el Final Fanstasy 7 ocurren en mundos diferentes entre sí, luego no sé."
Entonces si el cuadro de texto era menos ancho no se veía todo, o sea, yo quería que se viera, por ejemplo, una parte arriba y otra abajo, como expliqué antes.

Lo que no me gusta de este siste,a (queda como el que me acabas de mostrar) es que las palabras pueden aparecer en una línea y desùés bajar de repente, marea un poco ^^u Pero se puede solucionar agregando espacios en las zonas correspondientes, creo.

Gracias por hacerme acordar de esas opciones que no tuve en cuenta XD
  #8 (permalink)  
Antiguo 12/12/2012, 06:37
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Aparición por partes, de un texto.

La cuestión es poco a poco ir mejorando el sistema, de primeras va a tener muchos fallos, pero una vez que empieces a coger carrerilla verás como cada vez te gusta más y se te ocurren más cosas para hacerlo mejor.

En el ejemplo que te he mandado, se me ocurren unas cuantas cosas para mejorarlo.
Por ejemplo, que si un texto está abierto no puedas abrir otro hasta que acabe, que el texto no se cierre solo sino que tengas que pulsar un botón o hacer click. Que un personaje pueda hablarte en dos veces, por ejemplo, usando un array en vez de un string para la frase...

Además de eso, existen muchas formas de personalizar tu texto, yo estuve haciendo un juego de palabras y me sorprendí de la cantidad de cosas que se pueden hacer. Incluyendo seguramente mejorar el problema que dices de que las líneas se salten solas, con un sencillo cálculo de cuánto mide la frase y cuánto puede medir cada línea.

Evita eso de los espacios porque lo único que vas a hacer es complicarte la vida, el objetivo es que todo lo puedas hacer con el menor número de cambios posible y que al final, solo tengas que cambiar la frase a poner sin preocuparte de nada más.

Si quieres, ponme un privado con tu email y te mando el código del ejemplo que te puse. (ya que lo hice en horas de trabajo que al menos le sirva a alguien )
  #9 (permalink)  
Antiguo 13/12/2012, 00:54
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Aparición por partes, de un texto.

Pues no sé cómo evitar el problema que te comenté, si no uso espacios. Si el ejemplo no resuelve ese problema entonces ya no me sirve...

Lo que estoy haciendo, ayer no lo continué mucho, pero creo que ya está bien (aunque está hecho de la forma que comenté en el otro tema, me falta simplificarlo usando lo que aprendí gracias a ti).

El swf:
https://rapidshare.com/#!download|85...tra.swf|27|0|0

el fla:
https://rapidshare.com/#!download|85...tra.fla|91|0|0

Si lo modificas ten en cuenta que difícilmente yo pueda ver el código, porque uso flash 5 de macromedia.

Ah y está basado en un juego de NES, no es tanto mío.
  #10 (permalink)  
Antiguo 13/12/2012, 02:08
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Aparición por partes, de un texto.

Buenas, he estado viendo tu código y la verdad que no entiendo mucho. Yo hago las cosas de forma diferente y me pierdo un poco con el sistema que tú usas.

No veo que el problema del salto de línea sea tan importante como tu dices, creo que sería más interesante de momento crear un código que te permita optimizar tu sistema, en vez de tener que crear todo de nuevas cada vez.

De todas formas, para ese tema del salto de línea, una solución que se me ocurre es:
- establecer en una constante el máximo de caracteres que tiene tu línea.
Código as3:
Ver original
  1. CONST totalChar:int= 50;
- y en otra variable los caracteres que lleva la línea hasta ese momento.
Código as3:
Ver original
  1. var actChar:int = 0;

- dividir tu frase en palabras mediante un array. Por ejemplo
"Es peligroso ir solo" => fraseArray("es","peligroso","ir","solo")

- crear una función que compare la longitud de cada palabra con el número de caracteres que faltan por poner en la línea.

Código as3:
Ver original
  1. //Poner en una variable la cantidad de caracteres que quedan
  2. var difChar:int = totalChar - actChar;
  3. //Comparar palabra por palabra si cabe en esa línea
  4. if(fraseArray[i]<= difChar){
  5.      //Si lo es, dividir la palabra en letras y aplicar la función de que vayan saliendo
  6.      mostrarDialogo(fraseArray[i]);
  7. }else{
  8.      //Si no cabe, cambiar de línea y repetir el proceso
  9. }

Y luego es cuestión de ir puliéndolo. Si me aceptas el consejo, no quieras avanzar tan rápido, preocúpate primero de ir teniendo todo bien cerrado y sobretodo optimizado antes de pasar a lo siguiente
  #11 (permalink)  
Antiguo 13/12/2012, 05:09
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Aparición por partes, de un texto.

Eh tienes buenas ideas. Eso de establecer mediante una variable un máximo de caracteres, para empezar, no se me había ocurrido y está bueno. Pero como bien dices, hacemos las cosas diferente, yo por ejemplo no uso arrays. Y aunque esta vez fuera a usar, separar las palabras con comas y comillas es más tedioso que usar 2 text box. Sin duda es más económico para la compu pero ta... en esta ocasión paso.

Lo que te había dicho de escribir espacios no queda bueno porque el salto de línea tarda más de lo normal. Se me ocurre poner "si el caracter anterior y este es un espacio, avanzar al siguiente caracter", lo voy a intentar pero no sé si lo voy a usar.

La separación de palabras en el array podría ser automatizada también ¿no?

Edit:
Probé lo que dije de los espacios y tampoco está bueno porque hay que ver cuántos espacios hay que meter y en la prueba es una cosa y en la publicación otra.

Más adelante capáz que pruebo tu método, pero intentando automatizar la separación de palabras, que sería simplemente "si hay un espacio" ¿no?

Última edición por Tachikomaia; 13/12/2012 a las 05:33

Etiquetas: partes, video
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:40.