Comunidad de diseño web y desarrollo en internet online

Parar reproducción al cambiar de sección

Citar            
MensajeEscrito el 10 Dic 2009 03:48 pm
Tengo un site el cual tiene un menú que carga distintos swf's.
Uno de los swf's es un player de audio, cuando reproduzco una canción y pulso en el menú para ir a otra sección del sitio, se carga el swf correspondiente pero sigue sonando la canción del player.
Necesitaría saber cómo parar la reproducción de una pista de audio cuando pulso en el enlace a otra sección de un sitio.
Gracias

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 04:49 pm
Supongo que el player tiene un método stop que puedes llamar al cambiar de sección

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:18 pm
Si, en el mc del audio_player tengo la función:

Código ActionScript :

// Función para detener la reproducción
function parar(e:MouseEvent){
   canal.stop();   // Para la reproducción del audio.
   activa=false; // Indicamos que la reproducción se ha detenido
   pos=0; // Definimos la posición de la canción para que comience desde el principio
   play_mc.gotoAndStop(1);
}


y la función que carga cada sección, está en otro movieclip, es:

Código ActionScript :

function cargarSeccion(e:MouseEvent){   
   cargador.load(new URLRequest("swf/"+e.currentTarget.name+".swf"));
   cargador.x=258;
   cargador.y=260;
   parar();
}


He llamado a la función parar y no la reconoce, cómo tengo que invocar al método parar?

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:20 pm
Usa el nombre de instancia del MC para llamar la función:

audio_player.parar()

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:25 pm
EL mc se llama audio_player y la clase para exportarlo es Audio:

He probado
Audio.parar();
audio_player.parar();

y no funciona, cuál es su nombre de instancia?

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:26 pm
Selecciona el clip en el escenario y mira en el inspector de propiedades

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:27 pm
Intenté pero dice Mixed, debo agrupar todos los elementos del player y darles un nombre?

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:30 pm
El clip del player debe ser uno solo, para asegurarte que lo estás seleccionando, clicka primero en un lugar vacío para asegurarte que no tienes nada seleccionado, luego sobre el clip del reproductor

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:42 pm
El player aparece en la biblioteca como audio_player, cuando clico aparece dentro del mc audio_player que se compone de otros elementos, cajas de textos, imágenes, etc. es correcto cómo lo tengo?

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:45 pm
Entonces asumo que no lo tienes en el escenario y se está poniendo por programación. Entonces tienes que setearle el name, busca donde haga

var loquesea:Audio = new Audio()
loquesea.name = "algunnombre"

Luego tienes que ubicar la instancia usando getChildByName

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:52 pm
Si, se carga por programación, pero la sección se carga por swf no por mc:

Código ActionScript :

/* Importamos la clase de boton */
import Boton

/* Declaramos y creamos el array que contiene el nombre de las opciones de cada botón*/
var opcionesMenu:Array = new Array();
opcionesMenu=["BIO","GALERÍA", "MÚSICA", "VÍDEOS", "CUENTOS", "SERVICIOS","TIENDA","CONTACTO"];

/* Declaramos y creamos el array que contiene el nombre de los mc que cargará cada botón */
var enlacesMenu:Array = new Array();
enlacesMenu=["bio","galeria", "audio_player", "video_player", "cuentos","servicios","tienda", "contacto"];


/* Declaramos y creamos el sprite que contendrá a los botones. Definimos su posición y lo añadimos a escena */
var menu:Sprite = new Sprite();
menu.x=48;
menu.y=173;
addChild(menu);

// Declaramos el cargador y el URLRequest para los swf externos
var cargador:Loader = new Loader();
var url:URLRequest;
addChild(cargador);

/* Declaramos la instancia clip de la clase Boton. Definimos un bucle creará un botón con las distintas opciones de array opcionesMenu. 
Definimos el color que mostrará al situar el ratón encima, definimos su posición y lo añadimos a escena */
var clip:Boton;
for (var i:uint = 0; i<opcionesMenu.length; i++) {
   clip= new Boton(121,41,0x000,0xFFFFFF,opcionesMenu[i]);
      clip.addEventListener(MouseEvent.CLICK, cargarSeccion);
   clip.x=151*i;
   clip.name = enlacesMenu[i];   
   menu.addChild(clip);
}

function cargarSeccion(e:MouseEvent){   
   cargador.load(new URLRequest("swf/"+e.currentTarget.name+".swf"));
   cargador.x=258;
   cargador.y=260;
}



De este modo al pulsar por ejemplo en el botón que tiene el texto música me trae a escena el swf audio_player, ¿cómo puedo darle un nombre a ese mc cuando esté en escena?

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:54 pm
En lo que pusiste no veo que se instancie el audio_player

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 05:59 pm
No se instancia, lo que se hace es cargar el swf externo que corresponde al mc del audio_player, el menú funciona y me trae el audio_player a escena, pero como bien dices, al no poder darle un nombre no puedo invocar al método parar(), ¿existe alguna manera de poder darle un nombre a swf externo que estoy cargando en escena?

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 06:03 pm
Si el swf es el player mismo (es decir la clase corresponde al Document Class del swf cargado) puedes hacer

cargador.content.stop()

Si no es documento class, debes buscar el path a partir de content, ver que nombre de instancia tiene en el swf cargado o dárselo si fuera necesario

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 06:14 pm
La primera opción me da error, probaré la segunda, ¿cómo busco el path del swf para ver el nombre o cómo le doy un nombre al swf cargado?

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 06:18 pm
Busca ahora la instancia del player en el swf que vas a cargar, si está en el escenario la seleccionas y miras el panel de propiedades, sino buscas como se instancia en el código, etc

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 06:26 pm
El mc audio_player lo tengo en la biblioteca del fla principal, lo que he hecho es generar un swf de ese audio_player, y traerlo a escena mediante su nombre, audio_player.swf, ¿tendría que generar un fla con cada una de las secciones de la web y nombrar allí al mc o podría agrupar todos los elementos que componen el mc audio_player y darle así un nombre a todo el conjunto?

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2009 06:33 pm
Nop, la base de lo que explicas es errónea. Si generas una instancia de una clase la pones en un DisplayObject o derivado (típicamente un MovieClip), nunca en un swf, que es una película externa. Un fla por otra parte es un archivo fuente que compila en un swf. Si no te aclaras este hilo no tiene fin

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Dic 2009 06:39 pm
Tengo un cargador para los swf's:

Código ActionScript :

// Declaramos el cargador y el URLRequest para los swf externos
var cargador:Loader = new Loader();
var url:URLRequest;
addChild(cargador);


y los cargo así:

Código ActionScript :

function cargarSeccion(e:MouseEvent){   
   cargador.load(new URLRequest("swf/"+e.currentTarget.name+".swf"));
   cargador.x=258;
   cargador.y=260;
}


el nombre de los swf lo tengo en el array:

Código ActionScript :

var enlacesMenu:Array = new Array();
enlacesMenu=["bio","galeria", "audio_player", "video_player", "cuentos","servicios","tienda", "contacto"];

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Dic 2009 11:26 am
Sigo atascando con este asunto:

La historia es que no doy con la forma de asignar un nombre a los distintos swf's que cargo en escena

La función que carga los swf's es esta:

Código ActionScript :

function cargarSeccion(e:MouseEvent){   
   cargador.load(new URLRequest("swf/"+e.currentTarget.name+".swf"));
   cargador.x=258;
   cargador.y=260;
}


¿Cómo lograría darle un nombre a cada uno?

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Dic 2009 11:46 am
EN realidad ya tienen un nombre:

si pongo:

Código ActionScript :

function cargarSeccion(e:MouseEvent){   
   cargador.load(new URLRequest("swf/"+e.currentTarget.name+".swf"));
   trace(e.currentTarget.name);
   cargador.x=258;
   cargador.y=260;
}


al pulsar en el botón que carga el audio player, me devuelve audio_player, por lo que deduzco que es el nombre del swf, ahora al acceder a su propiedad parar me da un error.

[as]1119: Access of possibly undefined property audio_player through a reference with static type flash.display:Loader.

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Dic 2009 06:26 pm
Buenas, vuelvo al tema a ver si logro sacarlo adelante:

Tengo una función que carga el swf correspondiente al pulsar en el botón del menú, así por ejemplo, cuando pulso en el botón Música me carga audio_player.swf. Bien, he añadido una línea a esta función, para que asigne un nombre a cada swf que se añade a escena, quedando la función así:

function cargarSeccion(e:MouseEvent){
cargador.load(new URLRequest("swf/"+e.currentTarget.name+".swf"));
var nombre:String = e.currentTarget.name;
audio_player.parar();
trace(nombre);
cargador.x=258;
cargador.y=260;
}

Cuando pulso en cada botón, me sale por pantalla el nombre asignado a cada uno de los swf importados, así cuando pulso en Música me devuelve audio_player. Bien, le digo al audio player que invoque a su función parar(), que detiene la reproducción pero me dice:

[as]1120: Access of undefined property audio_player.

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Dic 2009 06:34 pm
Buenas, vuelvo al tema a ver si logro sacarlo adelante:

Tengo una función que carga el swf correspondiente al pulsar en el botón del menú, así por ejemplo, cuando pulso en el botón Música me carga audio_player.swf. Bien, he añadido una línea a esta función, para que asigne un nombre a cada swf que se añade a escena, quedando la función así:

function cargarSeccion(e:MouseEvent){
cargador.load(new URLRequest("swf/"+e.currentTarget.name+".swf"));
var nombre:String = e.currentTarget.name;
cargador.audio_player.parar();
trace(nombre);
cargador.x=258;
cargador.y=260;
}

Cuando pulso en cada botón, me sale por pantalla el nombre asignado a cada uno de los swf importados, así cuando pulso en Música me devuelve audio_player. Bien, le digo al audio player que invoque a su función parar(), que detiene la reproducción pero me dice:

Código ActionScript :

1120: Access of undefined property audio_player.


Como bien dice Jorge, creo que estoy equivocado en el planteamiento, podéis ofrecerme algún recurso o información para poder invocar corrrectamente los swf's a escena y poder manipularlos?

Saludos y gracias

Por tementa

33 de clabLevel



 

firefox

 

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