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

Como controlar las apariciones de mis MC's con un delay AS?. Ayuda Flash Masters!! :(

Estas en el tema de Como controlar las apariciones de mis MC's con un delay AS?. Ayuda Flash Masters!! :( en el foro de Flash y Actionscript en Foros del Web. Buenos Dias!. Pues mi problema es (aparte de mi ignorancia) que no se como hacer para controlar las apariciones de mis mc en una pelicula, ...
  #1 (permalink)  
Antiguo 15/07/2005, 10:09
Avatar de antihem  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 227
Antigüedad: 19 años, 11 meses
Puntos: 0
Información Como controlar las apariciones de mis MC's con un delay AS?. Ayuda Flash Masters!! :(

Buenos Dias!.

Pues mi problema es (aparte de mi ignorancia) que no se como hacer para controlar las apariciones de mis mc en una pelicula, es decir...

Suponiendo que tengo tres mc, y uno cuarto que es en donde publico los otros 3 mc, se entiende?.

Muy bien, pues a la hora de publicarlos en el cuarto mc, pues me salen todos juntos, y pues me preguntaba si existe alguna forma de controlarlos mediante tiempo (es lo q se me ocurre no se si existan otros metodos) para q por ejemplo mi mc 2 se reproduzca despues de tanto tiempo, o despues de reproducirse el mc 1.

Mas o menos se entiende la movida?..

Mi metodo usado ERRONEO creo

Bueno mi forma de controlar los mc actualmete (sin usar el delay q tanto busco) pues es agregando fotogramas vacios hasta que yo creo necesario mostrar el mc, mi pregunta es. ¿Esto es 100% incorrecto vdd?..

Se aceptan sugerencias y cualquier clase de ayuda (inclusive psicologica) muchas gracias por su tiempo!.
__________________
- -
:neurotico eso fue un php warning ?
creo q si... :golpeado:
  #2 (permalink)  
Antiguo 15/07/2005, 12:33
 
Fecha de Ingreso: julio-2005
Mensajes: 54
Antigüedad: 18 años, 9 meses
Puntos: 0
¿Qué tal, Antihem?

La función getTimer() ha demostrado ser muy útil, sólo tienes que adecuarla a tus necesidades y listo. Aquí un ejemplo que sirve para attachear tres movie clips dentro del stage con una pausa de 1 segundo entre cada uno (pueden ser pausas desde un milisegundo hasta horas, sólo hay que pensar en lo práctico de cada caso)

1.- Obtenemos el valor del contador de flash (se lee en milisegundos) y lo asignamos a una variable llamada "tiempo":
Código:
var tiempo = getTimer();
2.- Teniendo la variable "tiempo" definida con el valor del timer, procedemos a crear las variables que corresponderán al tiempo que queremos que dure cada pausa entre un movieclip y el otro. En este caso, se desea que al pasar un segundo, aparezca un movieclip; al pasar dos segundos, aparezca el siguiente, y al transcurrir tres segundos, debe aparecer el tercero. La cuarta pausa es para detener la función, pero eso lo veremeos más adelante. Recordemos que las medidas se establecen en milisegundos, entonces, por comodidad, lo multiplicamos por mil y lo sumamos al tiempo inicial:
Código:
var pausa1 = tiempo+(1*1000); 
var pausa2 = tiempo+(2*1000);
var pausa3 = tiempo+(3*1000);
var pausa4 = tiempo+(4*1000);
Flash empieza a contar desde cero, entonces, suponiendo que '0' es el valor de "tiempo", después de hacer las debidas operaciones matemáticas, lo anterior equivale a:
pausa1 = 1 segundo
pausa2 = 2 segundos
pausa3 = 3 segundos
pausa4 = 4 segundos

Bien, ahora hay que iniciar una función que se encargará de leer constantemente el tiempo transcurrido al momento (volverá a obtener un valor a través de getTimer(), pero esta vez será a cada instante), con lo cual detectará si ya pasaron 1, 2, 3 o 4 segundos a partir de que por primera vez se determinó la variable "tiempo".

Código:
this.onEnterFrame = function() {
	var al_momento = getTimer(); // Lee constantemente el tiempo transcurrido

// Se hacen las comparaciones de tiempos. Cuando el tiempo actual es
// mayor a cada una de las pausas, se atachea el movie clip:
	if (al_momento>pausa1) {
		attachMovie("uno", "uno", 1, {_y:10});
	}
	if (al_momento>pausa2) {
		attachMovie("dos", "dos", 2, {_y:20});
	}
	if (al_momento>pausa3) {
		attachMovie("tres", "tres", 3, {_y:30});
	}

// Después de cuatro segundos, le decimos que concluya la función
// y así ahorramos un poco de procesos en el CPU:
	if (al_momento>pausa4) {
		delete this.onEnterFrame;
		trace("timer concluido");
	}
};
¡Listo! Esta función la puedes poner en la timeline principal o dentro de un movieclip especial que será donde se cargarán los demás (creo que esto es el problema que tienes). Espero que te sea de utilidad.
  #3 (permalink)  
Antiguo 15/07/2005, 12:34
Avatar de PumasCampeon  
Fecha de Ingreso: junio-2004
Ubicación: @gs.mx
Mensajes: 240
Antigüedad: 19 años, 10 meses
Puntos: 0
yo conozco dos:
(1) usando la instruccion setInterval (tiempoDeseado) y limpiando la variable asignada clearInterval
(2) o usando un contador onEnterFrame que vaya sumando y una condicion if para cuando llegue a cierto numero
[CODE]
contador = 0;
this.onEnterFrame = function () {
contador++;
if (contador > 50) {
__________________
lo que se es una gota de lluvia, comparado con tu inmenso mar :-)
  #4 (permalink)  
Antiguo 18/07/2005, 07:31
Avatar de antihem  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 227
Antigüedad: 19 años, 11 meses
Puntos: 0
Exclamación Gracias Culantrax

Cita:
Iniciado por culantrax
!Listo! Esta función la puedes poner en la timeline principal o dentro de un movieclip especial que será donde se cargarán los demás (creo que esto es el problema que tienes). Espero que te sea de utilidad.
Entonces, todo el codigo que me hiciste el grandicimo favor de escribir va todo junto? osea:

Código:
var tiempo = getTimer();

var pausa1 = tiempo+(1*1000); 
var pausa2 = tiempo+(2*1000);
var pausa3 = tiempo+(3*1000);
var pausa4 = tiempo+(4*1000);

this.onEnterFrame = function() {
	var al_momento = getTimer(); // Lee constantemente el tiempo transcurrido

// Se hacen las comparaciones de tiempos. Cuando el tiempo actual es
// mayor a cada una de las pausas, se atachea el movie clip:
	if (al_momento>pausa1) {
		attachMovie("uno", "uno", 1, {_y:10});
	}
	if (al_momento>pausa2) {
		attachMovie("dos", "dos", 2, {_y:20});
	}
	if (al_momento>pausa3) {
		attachMovie("tres", "tres", 3, {_y:30});
	}

// Después de cuatro segundos, le decimos que concluya la función
// y así ahorramos un poco de procesos en el CPU:
	if (al_momento>pausa4) {
		delete this.onEnterFrame;
		trace("timer concluido");
	}
};
y lo pongo en donde quiera q se junten las mc vdd? por ejemplo en otra mc llamada "todas", pero lo pongo en un fotograma aparte o en el mc "todas" ya cuando lo publique en la linea principal?.

Ahora, debo de tenerlas creadas en la biblioteca? es decir, las mc llamadas uno, dos, tres?... porque lo he intentado ya y no me funciona, no se a que se deba. no tienes algun .fla de ejemplo? espero q no sea mucho pedir, muchas gracias de antemano, aunque aun no logro hacer q funcione, espero me puedas seguir ayudando.

Gracias!!!

----------------------

Gracias Pumascampeon, pero tengo una duda, no tienes el codigo completo y alguna explicacion mas completa, esque la vdd desconozco completamente el AS, gracias de cualquier manera.
__________________
- -
:neurotico eso fue un php warning ?
creo q si... :golpeado:

Última edición por antihem; 18/07/2005 a las 07:33 Razón: A gradecer a pumascampeon...
  #5 (permalink)  
Antiguo 19/07/2005, 10:18
 
Fecha de Ingreso: julio-2005
Mensajes: 54
Antigüedad: 18 años, 9 meses
Puntos: 0
1- En efecto, ese codigo se pone tal como lo has hecho dentro de un movieclip, que como has mencionado, lo puedes colocar posteriormente en cualquier fotograma de la película.

2.- Si, hay que crear primero los movieclips que se anexan con la instrucción attachMovie() y no olvidar que en las propiedades de cada uno de ellos debe estar activada la opción "Export for ActionScript". Esto lo obtienes haciendo click con el botón derecho sobre el movieclip deseado, dentro de la libreria, y eligiendo la opción "Linkage".

Si tienes aún problemas, por aquí andamos.
  #6 (permalink)  
Antiguo 19/07/2005, 12:40
Avatar de antihem  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 227
Antigüedad: 19 años, 11 meses
Puntos: 0
Lo he logrado ya, muchas gracias.
espero establecer contacto contigo para enviarte el .fla.
gracias!
__________________
- -
:neurotico eso fue un php warning ?
creo q si... :golpeado:
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 22:25.