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

Cómo invocar una función desde el Timeline

Estas en el tema de Cómo invocar una función desde el Timeline en el foro de Flash y Actionscript en Foros del Web. Estoy haciendo una animación para un portal, pero el efecto que estoy utilizando es una función que se invoca desde un evento de clip (on ...
  #1 (permalink)  
Antiguo 16/05/2009, 16:24
 
Fecha de Ingreso: marzo-2006
Mensajes: 61
Antigüedad: 18 años, 8 meses
Puntos: 0
Cómo invocar una función desde el Timeline

Estoy haciendo una animación para un portal, pero el efecto que estoy utilizando es una función que se invoca desde un evento de clip (on release, on press, etc.). ¿Cómo puedo invocarlo desde la línea de tiempo? Es decir sin tener que hacer un click del mouse, sino sólo cuando pase por determinado frame? Gracias.
  #2 (permalink)  
Antiguo 16/05/2009, 17:05
Avatar de highlord  
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 353
Antigüedad: 17 años
Puntos: 16
Respuesta: Cómo invocar una función desde el Timeline

Asi.

loadMovie("home.swf");

Si quieres llamar a un swf que este contenido dentro de un mc entonces le pones la instancia al mc y el codigo va asi, suponiendo que la instancia del mc es "contenedor"

_root.contenedor.loadMovie("home.swf");
  #3 (permalink)  
Antiguo 18/05/2009, 18:55
 
Fecha de Ingreso: marzo-2006
Mensajes: 61
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Cómo invocar una función desde el Timeline

Hola Highlord. Gracias por tu respuesta.
No me funciona o es que no entendí. Lo explico de nuevo y al detalle.
Mi función genera unos efectos de texto, el código es:

function generar() {
for ( i=1 ; i<=letras.num_letras; i++ ) {
letras["letra"+i].removeMovieClip()
}
letras.texto = texto;
letras.num_letras = length(letras.texto);
letras.loop = 1;
letras.espacio = 38;
letras.x_inicial = -(letras.num_letras-15.5)*letras.espacio;
letras.generar = 1;
}

Para invocarlo lo hago desde un botón denominado "Inicio", cuyo código es:

on (press) {
texto = "TEXTO DE PRESENTACION"
letras.frame = 7
generar()
}

Entonces funciona.
Pero yo quiero que no sea necesario presionar el botón, sino que la función se ejecute al leer el primer frame (o el segundo, o cualquiera) del Time Line. Entonces probé poner los parámetros en el mismo frame, y la invocación para que se autoejecute:


texto = "TEXTO DE PRESENTACION"
letras.frame = 7
generar()

function generar() {
for ( i=1 ; i<=letras.num_letras; i++ ) {
letras["letra"+i].removeMovieClip()
}
letras.texto = texto;
letras.num_letras = length(letras.texto);
letras.loop = 1;
letras.espacio = 38;
letras.x_inicial = -(letras.num_letras-15.5)*letras.espacio;
letras.generar = 1;
}


Pero NADA, no llama la función.
¿Cómo puedo hacer?

Gracias.
  #4 (permalink)  
Antiguo 18/05/2009, 21:24
Avatar de the_ghost  
Fecha de Ingreso: octubre-2003
Ubicación: Caracas, Venezuela
Mensajes: 104
Antigüedad: 21 años, 1 mes
Puntos: 5
Respuesta: Cómo invocar una función desde el Timeline

No entiendo por que tienes los parámetros de la función como variables externas a ella. La función debería estar definida así (suponiendo que letras es un MovieClip, realmente no sé que es):
function generar(texto:String, letras:MovieClip) {
}

Luego, para llamarla desde cualquier frame sólo pones en los Actions del frame:
letras.frame = 7;
generar("TEXTO DE PRESENTACION", letras);

Espero que sirva de algo.
__________________
ThE GhOsT
  #5 (permalink)  
Antiguo 19/05/2009, 09:35
 
Fecha de Ingreso: marzo-2006
Mensajes: 61
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Cómo invocar una función desde el Timeline

Efectivamente, letras es un Clip de película cuyo código es:


onClipEvent (load) {
generar = 0
letra._visible = 0
frame = 7
loop = 1
}

onClipEvent (enterFrame) {
if (generar == 1){
this.gotoAndStop(frame)
letra._visible=0
letra.duplicateMovieClip("letra"+loop,loop)
this["letra"+loop]._x=x_inicial+(espacio*(loop-1))
this["letra"+loop].letra=substring(texto,loop,1)
loop++
if (loop>num_letras) {
generar = 0;
}
}
}


Hice lo que me dijiste, pero igua no funciona. Pero creo que estoy cerca. Gracias.
  #6 (permalink)  
Antiguo 19/05/2009, 09:40
Avatar de the_ghost  
Fecha de Ingreso: octubre-2003
Ubicación: Caracas, Venezuela
Mensajes: 104
Antigüedad: 21 años, 1 mes
Puntos: 5
Respuesta: Cómo invocar una función desde el Timeline

Ok.. Si no lo resuelves, puedes subir el fla para revisarlo.
__________________
ThE GhOsT
  #7 (permalink)  
Antiguo 19/05/2009, 09:44
Avatar de highlord  
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 353
Antigüedad: 17 años
Puntos: 16
Respuesta: Cómo invocar una función desde el Timeline

Lo que yo te decia es que podrías generar los efectos de texto en un nuevo documento swf con las dimenciones deseadas y luego lo llamas desde tu swf principal con el cod. que te di.

_root.contenedor.loadMovie("efecto_de_texto.swf");

Al mc. le pones este cod. para que no tenga problemas en visualizar correctamente los efectos que se cargarán.

onClipEvent(load){
this._lockroot = true;
}
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 23:24.