viernes, 27 de julio de 2012

Carga aleatoria controlada de mp3 en Flash

Si deseamos cargar al azar y sin repetir los archivos, crearemos un array, de esta manera ir guardando los nuevos valores ya cargados y saber cuales ya han sido usados.

Básicamente he creado dos funciones, una será la que se encargue de darme un valor aleatorio y que no se repita en un ciclo determinado (este será el numero de archivos disponibles) function Busqueda() . Y la otra es la que se encargara de reproducir el sonido function activarsonido().

Al principio estableceremos la variables del array, y crearemos el objeto de sonido new Sound();.

Tambien crearemos tres variables, estas seran fijas durante toda la ejecución de las funciones, y servirán para poder personalizar estas. Las variables son TextoSound , ArchivoExtension y NumMovies. Estas variables tambien podrian introducirse como parametros al llamar a la función...(esto sería otro tema).

Este sera el codigo (Lee con mucha atención los comentarios; es donde esta la explicación)




//-----------------------------------carga al azar de mp3, pero sin repetir----------------------------------

var MiArray = new Array();
var playMusic = new Sound();
var ValorIni = 0;
/* Para mayor simplicidad es aconsejable que el primer archivo de la serie, tenga como numeral el 0.
La variable TextoSound es para el texto del nombre por ejemplo: "MySound" esto sería lo que correspondería
al primer archivo:"MySound0.mp3", de esta manera solo tienes que modificar esta variable para adaptarla
a tus archivos.
La variable ArchivoExtension es obvio esta variable es para especificar la extensión de los archivos, en este
caso mp3.
La variable NumMovies es para el numero total de archivos que deseas que hagan el ciclo por ejemplo:
" MySound0.mp3, MySound1.mp3, MySound2.mp3, MySound3.mp3= 4 archivos. Modifica este valor según
las imágenes de que dispongas */

var TextoSound = " MySound ";
var ArchivoExtension = ".mp3";
var NumMovies = 4;
//-----------------------------------------------------------------------------------------------------------
/* Esta función sólo nos devolverá un valor comprendido en la variable NumMovies, este se comprobara para ver
si ya existe en un Array creado en tiempo de ejecución. */

function Busqueda() {
var Controlde = true;
// while.. si ya se ha emitido el numero, repite la búsqueda del numero al azar
while (Controlde == true) {
Controlde = false;
Minor = random(NumMovies);
//for.. recorre todos las variables del Array, para buscar si ya ha sido emitido el numero actual
for (x=0; x<(NumMovies); x++) {
if (MiArray[x] == Minor) {
Controlde = true;
break;
}
}
}
/* Una vez pasado el número aleatorio y comprobado que no existe en ningún elemento del Array crea un
nuevo elemento del Array e introduce el nuevo valor. A continuación subimos el valor de la
variable, para el siguiente elemento */

MiArray[ValorIni] = Minor;
ValorIni++;
return Minor;
/*return.. se utiliza para que al solicitar una función nos devuelva el valor de la variable que se
indica. */

}
//-----------------------------------------------------------------------------------------------------------
function activarsonido() {
/*En esta variable solicita mediante la función, la entrada de un numero válido. */
MiNum = Busqueda();
var musica = TextoSound+MiNum+ArchivoExtension;
playMusic.loadSound(musica, true);
/* el evento ...onSoundComplete activa la función una vez se ha acabado de reproducir el sonido, y el
condicional if.. cierra el ciclo cuando se ha acabado de emitir todos los archivos de sonido */

playMusic.onSoundComplete = function() {
if (ValorIni<(NumMovies)) {
activarsonido();
}
};
}
//-----------------------------------------------------------------------------------------------------------
/*Este evento inica la reproducción, yo lo he puesto al cargar la línea principal de tiempo , pero se puede
modificar y colocar en cualquier otro evento, por ejemplo en un botón "on(release)..." */

_root.onLoad = function() {
activarsonido();
};
//-----------------------------------------------------------------------------------By Silvestre

...FIN DEL CODIGO

Este tutorial es creado en base a una pregunta del foro.

Si quieres dejar alguna pregunta o sugerencia.. te lo agradeceria.

martes, 24 de julio de 2012

reutilizar el modem/router Xavi 7768 de telefónica

Tengo un modem/router Xavi 7768, de hace buff casi 10 años llenandose de polvo en el desván, y pensando en montar una red local, me acordé de él. Dicho aparato lo tengo ya que fué un "regalo" de la compañía ya que por aquel entonces apenas habían permanencias alquileres etc... y después de unos desafortunados intentos de ponerme la ''primitiva adsl'' desistieron.

Bueno googleando encontré un artículo que me parece interesante, no lo he probado pero parece a simple vista funcional, y ya que estamos en la era de la "reutilización" y el reciclado colaborando con el medioambiente aunque esto destruya uno microclima creado por el paso del tiempo en dicho aparato eléctrico.


Buenas tardes, tras el experimento satisfactorio de añadirle otra antena al zyxel 660 http://www.adslzone.net/postlite25253-.html

Y dado que tenía a mano otros 2 routers Xavi 7768r.. por qué no usarlos?
Quiero más cobertura por toda la casa, porque yo lo valgo Muy Contento
Manos a la obra...

Primero un esquemita de lo que quiero:

original: http://www.telefonica.net/web/acano87/esquema.jpg

De esta forma podemos colocar el/los Xavi(s) distribuidos por la casa y tener buena cobertura en las plantas inferiores/superiores en cada respectivo punto... o simplemente para quien necesite crear redes wifi en amplias zonas.

Configuraciones:

Zyxel 660 v2
Conectado a Internet normalmente con su cable telefonico y wifi funcionando.
IP local: 192.168.1.10
Mascara: 255.255.255.0

Este router puede dar servicio a ordenadores directamente a través de cable o su propio wifi.. pero si queremos conectar nuestro "querido" Xavi?

No hay problema, enchufamos un cable de red RJ-45 desde un puerto cualquiera del zyxel a otro cualquiera del xavi.

Pero cómo configuramos el xavi?
De esta forma:
1º Cambiamos la IP local del xavi para que no coincida con la del zyxel,
por ejemplo le asigno la 192.168.1.100. Esto se hace desde Configuration-> LAN Connections-> Change default LAN port IP address.
2º Eliminamos la conexion WAN que tenga establecida, no queremos que se conecte a ningun proveedor ADSL, lo queremos a nuestro zyxel, asi que vamos a Configuration-> WAN connections y eliminamos la que tengamos.
3º Finalmente le decimos que se conecte al zyxel, aquí está la gracia.
Nos vamos a Configuration-> Routing table. Eliminamos la ruta que estuviera previamente, ya no la necesitaremos, y creamos una nueva simplemente indicando:
Gateway: 192.168.1.10 (la ip lan del zyxel)
Interface: eth0 ***MUY IMPORTANTE*** ya que aquí es donde le decimos que se conecte al zyxel por su cablecito lan correcto.

original:http://www.telefonica.net/web/acano87/routing.jpg

Salvamos..
Salvamos la configuración del router... Configuration-> Save config
Y reiniciamos el router...

De esta forma cualquier usuario que se conecte tanto por cable como por wifi a este Xavi tendrá internet sin notar nada, ya que su señal se puenteará hasta el Zyxel. TODOS los ordenadores que se conecten estarán en red entre sí, no hay división en subredes, aunque tambien se puede hacer, pero he preferido hacerlo así. Asi cualquier PC ve a otro, archivos compartidos e impresores. Tambien desde cualquier ordenador se puede manejar cualquier router Risa

Podemos repetir este proceso para el 2º Xavi.. igual:
IP Local 2ºXavi: 192.168.1.200
y a la hora del hacer el routing le ponemos en la Gateway la ip local del router al que nos conectemos.. Aqui podemos crear diseños en estrella o lineales, cada uno a su gusto/necesidades.
Y podremos poner una red wifi en donde necesitemos con tantos puntos como queramos y que los routers entre ellos ya se entenderán.. que a lo que el usuario le importa es que donde sea le salga con su portatil que tiene una red wifi para enxufar su messenger.

Inconveniente: los routers tienen que estar enchufaos entre ellos con cable. Si os fijais al hacer el routing table no podemos elegir Interface wireless Triste pero bueno. Este sistema me ha ayudado a mí mucho.

Un saludo y espero que a alguien le sirva, y contestaré gustosamente cualquier pregunta, duda o sugerencia.