Comunidad de diseño web y desarrollo en internet online

contro sonido

Citar            
MensajeEscrito el 20 Dic 2013 01:39 pm
Hola. podrias mirarme este codigo a ver que coño pasa?
haber tengo un canal de sonido que se llama canal_clap
un canal interior que se llama clap__1
gracias de antemano

package
{
import flash.display.SimpleButton;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundTransform;
import flash.net.URLRequest;

public class house extends MovieClip
{
private var clap1: Clap1 = new Clap1();
private var canal_clap: SoundChannel = new SoundChannel();
private var clap___1: Sound = new Sound(clap_1_sn);
private var clap_1_sn: URLRequest = new URLRequest("clap/clap1.mp3");
private var ClapOn: Boolean = false;
private var Clap_1_sonando: Boolean = false;

public function house()
{
canal_clap.stop();
stage.addChild(clap1);
clap1.x = 10;
clap1.y = 90;
clap1.addEventListener(MouseEvent.CLICK, clap1onHandler);
ClapOn = false;
Clap_1_sonando = false;
}

private function clap1onHandler(e: MouseEvent): void
{
if ((ClapOn = false) && (Clap_1_sonando = false)) //NO SUENA NADA Y SOLO SONARIA CLAP1
{

canal_clap.stop();
clap1.gotoAndStop(2);
ClapOn = true;
Clap_1_sonando = true;
canal_clap = clap___1.play(0, 99)
trace("Clap1");
}
else if ((ClapOn = true) && (Clap_1_sonando = false)) //ESTA SONANDO OTRO CLAP, LO APAGA Y SUENA CLAP1
{
canal_clap.stop();
clap1.gotoAndStop(1);
ClapOn = true;
Clap_1_sonando = true;
canal_clap = clap___1.play(0, 99)
trace("Clap2");

}
else if ((ClapOn = true) && (Clap_1_sonando = true)) //ESTA SONANDO CLAP1 Y LO APAGA (NINGUN CLAP SUENA)
{
canal_clap.stop();
clap1.gotoAndStop(1);
ClapOn = false;
Clap_1_sonando = false;
trace("Clap3");

}
}
}

estando ClapOn y Clap_1_sonando los dos False. va a al 3º else if y si pongo un sonido en ese me salta otro error y me dice que el sonido no es valido
si lo necesitas te mando el .as o algo
gracias

Por velaskone

27 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Dic 2013 03:15 pm
Cual es el objetivo? (explicar sin tecnicismos y con síntesis), me pierdo con mas de 10 lineas de codigo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Dic 2013 03:49 pm
perdon por que sea tan largo

la idea es. imaginate un boton.
ese clap_1_btn cuando le haces click tiene q sonar un mp3, si le vuelves a hacer click tiene q parar.
hay mas clap_2_btn, clap_3_btn... que hacen lo mismo pero ademas paran otro mp3 si esta sonando

por otro lado tiene que haber un canal que se llama canal_clap que sirve para saber si hay algun clap_*_btn sonando y pararlo si tal. Ahi meto un Boolean para saberlo.

private var canal_clap: SoundChannel = new SoundChannel();

y por otro lado hay un clap___1 que es un sonido que busca el mp3 en clap_1_sn

private var clap___1: Sound = new Sound(clap_1_sn);
private var clap_1_sn: URLRequest = new URLRequest("sonido.mp3");

meto dos Boolean para ver si esta sonando el canal o el mismo boton

private var ClapOn: Boolean = false;
private var Clap_1_sonando: Boolean = false;

ahora lo que hice con los botones fue hacer

if ((ClapOn = false) && (Clap_1_sonando = false)) //1

esto diria que no hay nada sonando

ClapOn = true;
Clap_1_sonando = true;
canal_clap = clap___1.play(0, 99);

y empezaria a sonar

si estubiera sonando ya ese boton y tubiera que empezar otra vez

else if ((ClapOn = true) && (Clap_1_sonando = false)) //2
{
canal_clap.stop();
ClapOn = true;
Clap_1_sonando = true;
canal_clap = clap___1.play(0, 99);

si esta sonando otro boton lo para y sena este

else if ((ClapOn = true) && (Clap_1_sonando = true) //3
{
canal_clap.stop();
ClapOn = false;
Clap_1_sonando = false;
}

lo malo que no veo el error. cuando pincho en el me salta directamente a //3 y si intento poner
canal_clap = clap___1.play(0, 99);
aunq solo sea para ver si suena me salta un Error #2068: Invalid sound.

Por velaskone

27 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Dic 2013 04:00 pm
Te voy a dar un ejemplo del tipo de relato que pido:

"hay tres personas, cuando aplaude la primera los otros dos se callan, si aplaude el segundo el tercero se calla y el primero no, si aplaude el tercero todos aplauden"

Esto lo podría explicar con una decena de sentencias y una decena de if, que es justamente lo que quiero evitar, quiero la accion que se busca, pura y dura, aka "sin tecnicismos"
Si la explicación tiene más de 4 líneas entonces ya no tiene síntesis.

Aunque parezca una tontería, si no es posible cumplir con alguna de las dos consignas anteriores, entonces tienes un problema de diseño.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Dic 2013 04:13 pm
ok.
dos animales (perro, gato), todo en silencio, cada uno cuando le pulsas empieza a ladrar o maullar todo el rato. si pulsas el perro el gato calla y el perro ladra, si ya estaba ladrando para de ladrar y empieza otra vez. Lo mismo con el gato

Por velaskone

27 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Dic 2013 04:28 pm
Ok, esa es una gran sintesis, y de alli podremos pensar una estructura. Lo primero será definir dos acciones, lo segundo dos disparadores, lo tercero las condiciones

Código ActionScript :

Acciones
//inicializo ambos sonidos para que puedan ser referenciados
var sonidoPerro:Sound = new Sound(...)
var sonidoGato = new Sound(...)

function ladraPerro(evt:MouseEvent):void{
  //calla gato con stop, si diera error se puede usar un try/catch
  //ladra o para si ya estaba sonando, se puede usar la propiedad  //SoundChannel.position que indica la posicion si esta sonando
}

function maullaGato(evt:MouseEvent):void{
  //calla perro
  //maulla o para si ya estaba sonando
}

//disparadores, 
perro.addEventListener(MouseEvent.CLICK, ladraPerro);
gato.addEventListener(MouseEvent.CLICK, maullaGato);


Ok, esta es la idea en pseudocodigo (soy bastante vago para escribir código). Tienes montada una clase que tiene otros aspectos visuales que no hacen al problema, quitalos en lo posible hasta que resuelvas esto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Dic 2013 03:25 am
Otra duda:
como se diria:
si pasa A haz B,
si aun no ha pasado A pero va a pasar. espera y haz B cuando pase A

seria

If (A==C)
{
haz B
}
if (A ??? C)
{
haz B
}

Por velaskone

27 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Dic 2013 03:26 am
Por cierto al final me salio tenia dos problemas
el 1º era que habia puesto = en vez de ==
y la 2º e metido el la biblioteca los sonidos y solucionado.
gracias

Por velaskone

27 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.