Comunidad de diseño web y desarrollo en internet online

manejar audio desde una variable en AS3

Citar            
MensajeEscrito el 25 Oct 2012 11:13 am
Buenas a todos. Me he encontrado con un problema que no se resolver y me pregunto si alguien puede arrojar luz sobre esto ya que he estado buscando por internet y no doy con la solución.

Tengo un swf en AS3 (vamos a llamarlo hijo.swf) que carga un vídeo .mp4 dinámicamente, controlo cuando empieza el vídeo y cuando termina para poder cargar otro, hasta aquí todo bien.

Este swf es cargado un programita en asp.net. Desde este programa puedo elegir si quiero escuchar el audio del vídeo de hijo.swf o si por el contrario escucho otro audio cualquiera pasándole una variable (volumevalue). He aquí mi problema ya que no consigo que funcione.

Os pongo el código. Espero que alguien me eche una mano ya que mi nivel de AS es paupérrimo :(

Con esto llamo al vídeo y controlo su duración:

Código :


stop();
var nc:NetConnection = new NetConnection(); 
nc.connect(null);

var ns:NetStream = new NetStream(nc); 
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 
ns.play("video_1.mp4"); 
function asyncErrorHandler(event:AsyncErrorEvent):void 
{ 
    // ignore error 
}
//Creamos, llamamos y colocamos el vídeo en el escenario
var video_1:Video = new Video(); 
video_1.attachNetStream(ns);
video_1.width = 663;
video_1.height = 373;
video_1.x = 28;
video_1.y = 319;
addChild(video_1);

//Desde aqui se controla cuando se inicia el video y cuando termina
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); 

function statusHandler(event:NetStatusEvent):void 
{ 
    switch (event.info.code) 
    { 
        case "NetStream.Play.Start": 
            trace("Start [" + ns.time.toFixed(3) + " seconds]"); 
            break; 
        case "NetStream.Play.Stop": 
            trace("Stop [" + ns.time.toFixed(3) + " seconds]");
         fscommand("END");
            break; 
    } 
}



Ahora le meto este código para controlar el audio y me da error:
1120: Access of undefined property paramObj.
He probado con SoundMixer.stopAll(); pero no va tampoco.

Código :


var volumevalue:String;


try
{ volumevalue = paramObj["volumevalue"];}
catch (error:IllegalOperationError){   
  volumevalue = "0";}



Una última cosa, no puedo meter clases externas, todo el código debe ir dentro la linea de tiempo.

¿Alguna sugerencia? Muchas gracias a todos de antemano

Por dooplanillo

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Oct 2012 12:23 pm
¿Que es paramObj?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Oct 2012 02:05 pm
Pues la verdad es que no tengo ni idea, con tanto copiar y pegar código, es posible que se haya quedado de un código anterior, me da que era el nombre de una variable :oops:

Por dooplanillo

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Oct 2012 02:06 pm
Aha .... me da que no está definida y que por eso te da ese error

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Oct 2012 11:35 am
Ok ya tengo solucionado el tema de leer la variable a través de URL

Código :

var volumevalue:String;
var param:Object = LoaderInfo(this.root.loaderInfo).parameters;

volumevalue = "volumevalue";
trace(volumevalue);


Mi duda es como asigno el valor de esa variable al sonido del swf. No se si me explico, si le doy valor 0 a volumevalue, quiere decir que no debe sonar el audio

Lo intento con esto pero me da error:
1067: Implicit coercion of a value of type String to an unrelated type Number.

Código :

var soundTrans:SoundTransform = new SoundTransform();

soundTrans.volume= volumevalue ;
volumevalue.soundTransform = soundTrans;

Por dooplanillo

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Oct 2012 11:36 am
Hazle un cast

soundTrans.volume= Number(volumevalue);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Oct 2012 01:56 pm
Guay, con esa linea de código me lo soluciona, pero con la siguiente me vuelve a dar error:

Código :

volumevalue.soundTransform = soundTrans;


me da el siguiente error:
1119: Access of possibly undefined property soundTransform through a reference with static type String.

Perdon por mi incompetencia pero me ha llegado esto de rebote y mi idea de programación está rallando en lo absurdo. Gracias por vuestra paciencia, tiempo y ayuda.

Por dooplanillo

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Oct 2012 01:58 pm
Porque se supone que con esta linea de código, consigo asignar el volumen pasado por la variable volumevalue al video, no?

Por dooplanillo

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Oct 2012 02:24 pm
No se si me he explicado bien, ya no se ni lo que digo arrrrrggggggg!!!!!!!!
Lo que quiero conseguir es que si var valuevolume=0 entonces el audio del swf se quede mudo.....
Alguna pista de lo que puedo hacer???

Por dooplanillo

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Oct 2012 02:25 pm
No, en la ecuación falta el SoundChannel creado a partir que le das play al objeto Sound, entonces sería algo así

Código ActionScript :

var sTransform:SoundTransform = new SoundTransform();
sTransform.volume = Number(volumevalue);
musicSoundChannel.soundTransform = sTransform;


Busca SoundChannel en el código a ver como se llama

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Oct 2012 10:16 am
Muchas gracias por tu paciencia Solisarg!

Al final puse este código, el cual parece funcionar:

Código ActionScript :

//Controlamos la variable audio que pasamos a través de URL
var volumevalue:Number;
var param:Object = LoaderInfo(this.root.loaderInfo).parameters;


try
{
   volumevalue = Number(param["volumevalue"]);
}
catch(e:Error)
{
   //---   
}
//Si es cero, quitamos el volumen
if(volumevalue == 0)
   SoundMixer.soundTransform = new SoundTransform(0);


Cuando prueben a cargar el swf en el programa de carga y seleccionen el audio, veremos si funciona realmente, en local y pasandole a la variable el valor 0 ha funcionado.

Reitero mi agradecimiento a esta comudidad y a solisarg personalmente por ayudar y enseñar!

Por dooplanillo

23 de clabLevel



 

firefox

 

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