Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/06/2004, 19:05
albridi
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 6 meses
Puntos: 3
Clicks, desfases, etc, trabajando con sonido.

Hola gente,

Tengo un problema con flash y el sonido.

Quiero hacer lo siguiente: Arrancar el sonido 1, cuando acabe el 1 meter en bucle el sonido 2 (4 veces), cuando termine esta 4 vuelta, arrancar el sonido 3 que es el final del tema.

El problema está en que flash se comporta de manera aleatoria, es decir, a veces "clava" las salidas/entradas de los sonidos, otras suena un chasquido entre ambos sonidos o sencillamente los retrasa.

Lo he intentado todo (o eso creo) onSoundComplete, if (sonido.position == sonido.duration), hacer un bucle entre dos frames aumentando una variable para que sea el disparador del siguiente sonido si se cumple una condición dada, utilizar getTimer() para si el milisegundo es el adecuado disparar el sonido, he hecho pequeños fades de entrada y salida en los archivos de sonido con la intención de dispararlos unos milisegundos antes para realizar crossfades, pero nada.

He podido comprobar mediante la acción enterFrame de un clip, que el sound posistion me reporta valores aleatorios al establecer un bucle entre dos frames. Es decir, en un frame después de creado y disparado el sonido (por ejemplo en el frame 6) pongo algo del estilo:

x++
if(x==300){
gotoAndStop(8)
}

en el 7 un gotoAndPlay(6) y en el 8 un stop().

Luego en las acciones de eventos del clip, o sea, (load, enterframe, etc) pongo:

onClipEvent(enterFrame){
trace(sonido.position)
}

y si saco la diferencia entre un valor de los que flash va listando en la ventana de salida y el siguiente, compruebo que no es una relación constante en absoluto.

A final de tres días de pruebas estoy casi convencido de que la cabeza lectora de las líneas de tiempo en flash "pega botes" o sea que no da lecturas constantes, y otra prueba que me reafirma en ello es que si pongo en dos frames consecutivos las acciones r=getTimer() y r2=getTimer, la diferencia entre r y r2 nunca es la misma.

De todos modos me gustaría saber si alguno habéis tenido este o un problema similar, y si habéis podido darle alguna solución.

Saludos.