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

Problema con dispatchEvent

Estas en el tema de Problema con dispatchEvent en el foro de Flash y Actionscript en Foros del Web. Hola, tengo un problema que no puedo resolver y espero que puedan darme una mano, el tema es el siguiente: 1 tengo una clase que ...
  #1 (permalink)  
Antiguo 14/01/2014, 05:59
 
Fecha de Ingreso: marzo-2006
Mensajes: 2
Antigüedad: 18 años, 1 mes
Puntos: 0
Pregunta Problema con dispatchEvent

Hola, tengo un problema que no puedo resolver y espero que puedan darme una mano, el tema es el siguiente:

1 tengo una clase que debería cargar los sonidos de una subcarpeta y reproducirlos, (esto anda bien) pero a su ves he añadido unos dispatchEvent para que al iniciar el sonido ejecute una funcion dentro de un .fla que anime a un personaje (mueva los labios), tambien he añadido otro dispatchEvent que se dispara cuando termina la duracion del sonido y de esta forma con una funcion detenga la animacion de los labios y asu ves avance la pelicula (play). El tema es esos disparadores solo se estan activando la 1ra ves que los ejecuto, en una misma linea de tiempo necesito hacer que el personaje "hable" varias veces y solo funciona el cambio de sonido mas no se vueve a activar el dispatchEvent.

les dejo mi codigo a ver si puden ayudarme, ya me amaneci buscando solucion y nada!!


Sonido.AS
=======

import flash.display.MovieClip;

public class Sonidos extends MovieClip {

private var url:String
private var song:SoundChannel;

public function Sonidos(url:String) {
var sonido:Sound = new Sound();
var urlSonido:URLRequest = new URLRequest(url);
var canal:SoundChannel = new SoundChannel ();
var trans:SoundTransform = new SoundTransform ();

sonido.addEventListener(Event.OPEN,alComenzar);
sonido.addEventListener(ProgressEvent.PROGRESS,enP rogreso);
sonido.addEventListener(Event.COMPLETE,alCompletar );

trans.volume = .7;
sonido.load(urlSonido);

function alComenzar(evento:Event):void {
trace("Evento al comenzar OPEN");
}

function enProgreso(evento:ProgressEvent):void {
trace("Evento en Progreso PROGRESS");
}

function alCompletar(evento:Event):void {
dispatchEvent(new Event("sonidoIniciado")); //DisparaEvento sonidoIniciado
dispatchEvent(ev);
trace("Evento Cargado COMPLETE");
trace("Reproduciendo");
song = sonido.play(0,1,trans);
song.addEventListener(Event.SOUND_COMPLETE,alTermi nar)
}

function alTerminar(evento:Event):void{
trace("Termino el sonido");
dispatchEvent(new Event("sonidoTerminado")); //DisparaEvento sonidoTerminado
}
}
}
}



Video1.fla
=======

frame24 (aca si funciona todo)
----------

stop();
import com.Sonidos;
var canta:Sonidos = new Sonidos("audio/002.mp3");

import flash.events.Event;
import flash.display.MovieClip;

canta.addEventListener("sonidoIniciado", onHabla);
canta.addEventListener("sonidoTerminado", onCalla);
canta.addEventListener("gameOver",onJojo);

function onHabla(evento:Event):void{
trace("Sonido Iniciado!");
personaje.cabeza.boca.gotoAndPlay("habla");
}

function onCalla(evento:Event):void{
trace("Sonido Terminado!");
personaje.cabeza.boca.gotoAndPlay("calla");
canta.removeEventListener("sonidoIniciado", onHabla);
play();
}

function onJojo(evento:Event):void{
trace("Evento onJojo!");
}


frame 40 (aca solo funciona el sonido)
-----------

stop();

//import com.Sonidos;
var canta3:Sonidos = new Sonidos("audio/003.mp3");

//import flash.events.Event;
//import flash.display.MovieClip;

canta.addEventListener("sonidoIniciado", onHabla2);
canta.addEventListener("sonidoTerminado", onCalla2);


function onHabla2(evento:Event):void{
trace("Sonido Iniciado!!!!!");
personaje.cabeza.boca.gotoAndPlay("habla");
}

function onCalla2(evento:Event):void{
trace("Sonido Terminado!!!!!");
personaje.cabeza.boca.gotoAndPlay("calla");
play();
}



Gracias, es mi 1ra pelicula con flash, disculpen mis burradas....
  #2 (permalink)  
Antiguo 14/01/2014, 22:18
 
Fecha de Ingreso: marzo-2006
Mensajes: 2
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Problema con dispatchEvent

Ya lo solucione:

canta3.addEventListener("sonidoIniciado", onHabla2);
canta3.addEventListener("sonidoTerminado", onCalla2);

Etiquetas: as3
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 02:42.